逐行删除文本文件中的重复项
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 替换重复项。
我正在尝试编写一个 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 替换重复项。