Python 删除textfile中的重复行-除非它包含一个";{";或";}";
我有一个非常大的文本文件,内容如下:Python 删除textfile中的重复行-除非它包含一个";{";或";}";,python,Python,我有一个非常大的文本文件,内容如下: @INBOOK{Ackermann1999-b, author = {Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackerma
@INBOOK{Ackermann1999-b,
author = {Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann,
K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F.
and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and
Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann,
K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F.
and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and
Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann,
K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F.
and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and
Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann},
year = {1980},
timestamp = {1995-12-02}
}
我想删除重复的行,除了这些包含括号{或}的行。
结果应该如下所示:
@INBOOK{Ackermann1999-b,
author = {Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann,
Ackermann, K.-F. and Ackermann, K.-F. and Ackermann, K.-F. and Ackermann},
year = {1980},
timestamp = {1995-12-02}
}
多亏了Vinay Sajip,我遇到了这个Python脚本:
lines_seen = set() # holds lines already seen
outfile = open("literatur_clean.txt", "w")
for line in open("literatur_dupl.txt", "r"):
if line not in lines_seen: # not a duplicate
outfile.write(line)
lines_seen.add(line)
outfile.close()
但它也会删除带有右括号}的行和具有相同authordata的行。
因此,我需要括号的条件
有人能指出我加入这个条件吗
提前感谢,感谢eumiro,只需稍加修改“或”代替“和”即可完美工作:如果(“{”在行中或“}”在行中)或行中未看到:
if ('{' in line or '}' in line) and line not in lines_seen: # not a duplicate