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
,你会怎么做呢?
答
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
你能发布您的代码? –