如何删除重复行 - 仅在某些部分? Python 2.7.9
How to remove duplicate lines - only in certain sections? Python 2.7.9
我正在尝试将 .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 'identifiers.' 我想阅读此文件,并简单地删除重复的 "DATA TWO:"。虽然我熟悉如何简单地删除重复行,但我需要删除每个唯一部分的重复项,以产生:
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
"DATA TWO:'s varies per identifier, usually two or three. It does not matter which of the "DATA TWO 的数量”被打印到新文件中;虽然每个的措辞略有不同,但它们捕获了我试图找到的内容,任何一个都足够了。
我对编程比较陌生,使用 Python 2.7.9.
您可以使用集合轻松地做到这一点。例如,如果你有一个列表 [1,1,3,3,4,4],通过执行 set([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)
请记住,此解决方案不保留顺序。
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:
我正在尝试将 .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 'identifiers.' 我想阅读此文件,并简单地删除重复的 "DATA TWO:"。虽然我熟悉如何简单地删除重复行,但我需要删除每个唯一部分的重复项,以产生:
IDENTIFIER: unique values
DATA ONE: more unique values
DATA TWO: more unique values
"DATA TWO:'s varies per identifier, usually two or three. It does not matter which of the "DATA TWO 的数量”被打印到新文件中;虽然每个的措辞略有不同,但它们捕获了我试图找到的内容,任何一个都足够了。
我对编程比较陌生,使用 Python 2.7.9.
您可以使用集合轻松地做到这一点。例如,如果你有一个列表 [1,1,3,3,4,4],通过执行 set([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)
请记住,此解决方案不保留顺序。
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: