2

私がやりたいことは (例として以下のテキストを使用)、テキスト ファイルで文字列「Text2」を検索し、「Text 2」の 2 行後に行 (「Inserted Text」) を挿入することです。「テキスト 2」はテキスト ファイルのどの行にもある可能性がありますが、テキスト ファイル内で 1 回出現することがわかっています。

したがって、元のファイルは次のとおりです。

Text1
Text2
Text3
Text4

そして、ここに私が欲しいものがあります:

Text1
Text2
Text3
Inserted Text
Text 4

したがって、以下のコードを使用して行の上にテキストを追加する方法はすでに知っています。

for line in fileinput.input('file.txt', inplace=1,backup='.bak'):
    if line.startswith('Text 4'):
        print "Inserted Text"
        print line,
    else:
        print line,

しかし、ファイル内で検索しているテキストの 2 行後に何かを追加する方法がわかりません。

4

3 に答える 3

3

クイックアンドダーティな方法はそのようなものです

before=-1
for line in fileinput.input('file.txt', inplace=1,backup='.bak'):
    if line.startswith('Text 2'):
        before = 2
    if before == 0
        print "Inserted Text"
    if before > -1
        before = before - 1
    print line,
于 2013-02-28T23:53:00.867 に答える
2

あなたが使用することができます

f = open("file.txt","rw")
lines = f.readlines()
for i in range(len(lines)):
     if lines[i].startswith("Text2"):
            lines.insert(i+3,"Inserted text") #Before the line three lines after this, i.e. 2 lines later.

print "\n".join(lines)
于 2013-02-28T23:50:55.367 に答える
2

ファイルの内容をリストにロードすると、操作が簡単になります。

searchline = 'Text4'
lines = f.readlines() # f being the file handle
i = lines.index(searchline) # Make sure searchline is actually in the file

i行のインデックスが含まれるようになりましたText4。それを使用して、list.insert(i,x)前に挿入できます。

lines.insert(i, 'Random text to insert')

または後:

lines.insert(i+1, 'Different random text')

または 3 行後:

lines.insert(i+3, 'Last example text')

s のエラー処理を含めるようにしIndexErrorてください。そうすれば、それで好きなことを行うことができます。

于 2013-02-28T23:49:33.900 に答える