我正在尝试将.txt文件合并到已清理的数据版本中。目前,该文件的结构如下:
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
DATA TWO: more unique values
DATA TWO: more unique values
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
DATA TWO: more unique values
IDENTIFIER:
依此类推,大约有500个标识符。'我想阅读这个文件,只需删除重复的" DATA TWO:" s。虽然我熟悉如何简单地删除重复的行,但我需要删除每个唯一部分的重复项,以产生:
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
" DATA TWO:的数量因标识符而异,通常为两个或三个。 " DATA TWO"中的哪一个并不重要。打印到新文件;虽然每个措辞的措辞略有不同,但它们捕获了我想要找到的东西,任何一个都足够了。
我使用Python 2.7.9编程相对较新。
答案 0 :(得分:0)
with open("input.txt") as f, open("out.txt", "w") as out::
found = False
for line in f:
# new section always reset flag
if line.startswith("IDENTIFIER:"):
out.write(line)
found = False
# if first time we have seen DATA TWO write and set flag to true
elif line.startswith("DATA TWO:") and not found:
out.write(line)
found = True
# ignore lines with "DATA TWO:" if we have already found one in the current section and continue
elif line.startswith("DATA TWO:"):
continue
# else write the other lines in the section
else:
out.write(line)
使用示例输入输出:
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
IDENTIFIER:
答案 1 :(得分:-2)
您可以使用集合轻松完成此操作。例如,如果你有一个列表[1,1,3,3,4,4],通过设置([1,1,3,3,4,4])你得到[1,3,4]这是一套。
>>> lines_lst = open('file.txt', 'r').readlines()
>>> lst_set = set(lines_lst)
>>> output = open('cleanfile.txt', 'w')
>>> for line in lst_set:
output.write(line)
请记住,此解决方案不会保留顺序。