0

テキスト文書全体をスキャンして、「笑」と書かれているものをすべて見つけて、最初の前の章タグの id 値に置き換える方法はありますか? 多分このようなもの。

パイソン

x=open('source.txt')
lines = x.readlines()
for line in lines:
  if line.startswith('<text'):
    line.replace('lol', first previous chapter id value)
x.write(lines)
x.close()

ソーステキスト

<chapter id="1">
<text class="lol">
<text class="lol">
<chapter id="2">
<text class="lol">
<text class="lol">
<chapter id="3">
<text class="lol">
<text class="lol">
<chapter id="4">
<text class="lol">
<text class="lol">

結果テキスト

<chapter id="1">
<text class="1">
<text class="1">
<chapter id="2">
<text class="2">
<text class="2">
<chapter id="3">
<text class="3">
<text class="3">
<chapter id="4">
<text class="4">
<text class="4">
4

1 に答える 1

3

それを試してみてください。基本的に、追加で行う必要があるのは、そのチャプター ID を見つけることだけでした。また、ファイルに書き込むことを知っていると仮定しているため、各行を印刷したのはなぜですか。

import re
with open('source.txt') as x:
    for line in x:
        if line.startswith('<chapter'):
                id = re.findall('"([^"]*)"', line) #Grabs string between matching quotations
        if line.startswith('<text'):
                line = line.replace('lol',id[0])
        print line[:-1]

出力:

<chapter id="1">
<text class="1">
<text class="1">
<chapter id="2">
<text class="2">
<text class="2">
<chapter id="3">
<text class="3">
<text class="3">
<chapter id="4">
<text class="4">
<text class="4">
于 2012-08-10T17:08:52.803 に答える