Python - 在文件的特定行中的单词后添加字符串

问题描述:

我需要在文本文件的特定行中的单词后添加字符串。原始文件是: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

你能发布您的代码? –

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只需在写入模式下打开相同的文件并在列表行中写入行。 –

我会考虑这个问题:

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) 

这是真的,它似乎非常低效的(也可能不是一个大文件的现实)。我会好奇看到更好的方法。

这将查找以“第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