逐行删除文本文件中的重复项

Remove duplicates in text file line by line

我正在尝试编写一个 Python 脚本来删除文本文件中的重复字符串。但是,重复数据删除应该只发生在每一行中。

例如,文本文件可能包含:

þ;ABC.001.123.1234;þ;;þ;10 ABC\ABCD\ABCDE;10 ABC\ABCD\ABCDE
þ;ABC.001.123.1234;þ;;þ;10 ABC\ABCD\ABCDE;12 EFG\EFG;12 EFG\EFG;þ þ;ABC.001.123.1234;þ;;þ;10 ABC\ABCD\ABCDE;12 EFG\EFG;09 XYZ\XYZ\XYZ;12 EFG\EFG

因此,在上面的示例中,脚本应该只删除粗体字符串。

我搜索了 Stack Overflow 和其他地方以尝试找到解决方案,但运气不佳。似乎有很多解决方案可以删除重复的行,但我正在尝试逐行删除一行中的重复项。

更新: 澄清一下 - þ 是每个字段的分隔符,; 是每个字段中每个项目的分隔符。在每一行中,我都试图删除分号之间包含的所有重复字符串。

更新 2: 编辑示例以反映重复值可能并不总是紧跟在值的第一个实例之后。

@Prune的回答给出了思路但是需要修改成这样:

input_file = """"þ;ABC.001.123.1234;þ;;þ;10 ABC\ABCD\ABCDE;10 ABC\ABCD\ABCDE;þ
þ;ABC.001.123.1234;þ;;þ;10 ABC\ABCD\ABCDE;12 EFG\EFG;12 EFG\EFG;þ"""""

input = input_file.split("\n")

for line in input:
    seen_item = []
    for item in line.split(";"):
        if item not in seen_item or item == "þ":
             seen_item.append(item)
    print(";".join(seen_item))
import re
with open('file', 'r') as f:
     file = f.readlines()
for line in file:
     print(re.sub(r'([^;]+;)()', r'', line))

逐行读取文件;然后使用 re.sub 替换重复项。