我有一个.txt文件,其中包含许多重复的行,并且我想替换第一行并保留其他行。谁能帮我吗?
原始的test.txt内容
222
111
111
111
111
我想要的文件
222
111
111
111
我尝试过这种方法
但是此方法将替换所有重复的行。
无论如何,我得到了答案。真的很简单。
flag = 1
for line in fileinput.input(filename, inplace = 1):
if "111" in line and flag==1:
print(line.replace("111", "22222").rstrip() )
flag = 2
else:
print(line.replace("111", "111").rstrip() )
我认为这样效率不高,希望您能回答。
答案 0 :(得分:0)
您可以使用collections.defaultdict
并创建一个包含文档中每个值的所有索引的字典。如果索引不止一个,则可以通过对字典值进行切片并将它们附加到新列表中来仅写入在第一项之后的值。
from collections import defaultdict
with open('test.txt') as f:
content = (f.read()).split()
dd = defaultdict(list)
for i, v in enumerate(content):
dd[v].append(i)
res = []
for v in dd.values():
if len(v) == 1:
res.append(content[v[0]])
else:
for i in v[1:]:
res.append(content[i])
with open('out.txt', 'w') as f:
f.write('\n'.join(map(str,res)))
222 111 111 111