4

新しい情報を含めるためにいくつかのテキスト ファイルを編集する必要がありますが、周囲のテキストに基づいてファイル内の特定の場所にその情報を挿入する必要があります。

これは私が必要とする方法では機能しません:

 with open(full_filename, "r+") as f:
        lines = f.readlines() 
        for line in lines:
            if 'identifying text' in line:   
                offset = f.tell()
                f.seek(offset)  
                f.write('Inserted text')

...ファイルの最後にテキストを追加するという点で。識別テキストに続く次の行にどのように書きますか?

(AFAICT、これは同様の質問の複製ではありません。この回答を提供できる人は誰もいなかったからです)

4

3 に答える 3

8

その場で作業する必要がない場合は、次のようになります。

with open("old.txt") as f_old, open("new.txt", "w") as f_new:
    for line in f_old:
        f_new.write(line)
        if 'identifier' in line:
            f_new.write("extra stuff\n")

(または、Python-2.5 互換にするため):

f_old = open("old.txt")
f_new = open("new.txt", "w")

for line in f_old:
    f_new.write(line)
    if 'identifier' in line:
        f_new.write("extra stuff\n")

f_old.close()
f_new.close()

どちらが回る

>>> !cat old.txt
a
b
c
d identifier
e

の中へ

>>> !cat new.txt
a
b
c
d identifier
extra stuff
e

('string2' で 'string1' を使用することに関する通常の警告: 'enamel' の 'name' は True、'Othello' の 'hello' は True などですが、明らかに条件を任意に複雑にすることができます。)

于 2013-03-29T19:19:04.950 に答える
1

正規表現を使用して、テキストを置き換えることができます。

import re
c = "This is a file's contents, apparently you want to insert text"
re.sub('text', 'text here', c)
print c

「これはファイルの内容です。ここにテキストを挿入したいようです」を返します

ユースケースでうまくいくかどうかはわかりませんが、うまくいけばシンプルです。

于 2013-03-29T19:45:58.173 に答える