2017-10-05 18 views
-1

テキストファイルの特定の行に単語の後に文字列を追加する必要があります。元のファイルがある:例えばPython - ファイルの特定の行に単語の後に文字列を追加する

line 1: value1 
line 2: value2 
line 3: value3 
line 4: value4 
line 5: value5 

、私は、ファイルがなるように、単に「行」の後の行番号3で「NAME」を追加したい:

あなたがそれを行うだろうか
line 1: value1 
line 2: value2 
line NAME 3: value3 
line 4: value4 
line 5: value5 

+0

あなたはあなたのコードを投稿してもらえますか? –

答えて

0
with open(file, 'r') as f: 
    lines = [] 
    for line in f: 
     split_lines = line.split(':') 
     if split_lines[0].endswith('3') is True: 
      lines.append(split_lines[0][:-1] + NAME + split_lines[1:]) 
     else: 
      lines.append(line) 
+0

ここでファイルを書き換えますか? –

+0

@Stéphane書き込みモードで同じファイルを開き、リストラインに行を書き込んでください。 –

0

私はこれを検討する:

line_number = 3#I understood you know this. right ? 
string_to_add = "NAME"#I understood you know this. right ? 
string_to_find = "line"#I understood you know this. right ? 
filename = "toto" 
with open(filename,"r") as f: 
    s = f.readlines() 
s[line_number] = s[line_number].replace(string_to_find,string_to_find+string_to_add) 
with open(filename,"w") as f: 
    for line in s: 
     f.write(line) 

それはそれは非常に非効率的(かつ大容量のファイルのため、おそらく現実的ではない)ようだというのは本当です。私はより良い方法を見て好奇心が強いだろう。

1

"行3:"で始まる行を探し、この行だけを編集し、残りの部分をそのまま残して、新しいファイルに書き込みます。

with open('f1.txt', 'r') as f: 
    lines = [] 
    for line in f: 
     if line.startswith("line 3:"): 
      split_line = line.split() 
      split_line.insert(split_line.index("3:"), "NAME") 
      lines.append(' '.join(split_line) + '\n') 
     else: 
      lines.append(line) 

with open('f2.txt', 'w') as f: 
    for line in lines: 
     f.write(line) 

あなたは以下のコードを実行し、

with open('f2.txt', 'r') as f: 
    for line in f: 
     print(line, end='') 

それは印刷されます。

line 1: value1 
line 2: value2 
line NAME 3: value3 
line 4: value4 
line 5: value5 
関連する問題