我有一个包含以下数据行的文本文件:
data123||data456
data146||data269
data123||data456
data697||data983
data123||data456
我想首先打印重复的行,以便我可以记录这些行是什么。然后我想创建一个新的文本文件,在其中删除原始文本文件中这些重复行的所有副本。
到目前为止,我有以下代码,但它似乎给了我重复的单个“数据###”而不是它包含的整个LINE。
with open("file.txt") as f:
seen = set ()
for line in f:
line_lower =line.lower()
if line_lower in seen:
print (line)
else:
seen.add(line_lower)
答案 0 :(得分:0)
您可以使用一套:
s=set()
for line in open("file.txt"):
if line in s:
print line
else:
s.add(line)
然后重写文件:
with open("file.txt") as f:
for line in s:
f.write(line)
答案 1 :(得分:0)
按原样印刷线条并不是火箭科学,所以我专注于在保存订单的同时删除重复项:
from collections import OrderedDict
data = """data123||data456
data146||data269
data123||data456
data697||data983
data123||data456"""
uniq = OrderedDict((row, None) for row in data.splitlines()).keys()
uniq
中的结果是没有重复的行列表:
In [10]: print '\n'.join(uniq)
data123||data456
data146||data269
data697||data983