如何从文本文件中删除具有重复值的行

时间:2017-02-09 13:46:57

标签: python bash shell

我有一个包含各种代码的文本文件(每行一个代码),其中一些不止一次出现(总是按顺序)。我想知道如何删除重复值的那些行。

示例:File1.dat

84578    
84581    
84627    
84761    
84761    
84792    
84792   
84792    
84886    
84886    
84905    
84905    
84905

我希望输出为:

84578    
84581    
84627    
84761    
84792    
84886    
84905

注意:在我的文件中,行之间没有空格。 任何解决方案都可以,脚本,终端命令等。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

由于重复的行是连续的,因此使用Linux / MSYS,您只需使用uniq

使用您的数据输出:

$ uniq lines.txt
84578
84581
84627
84761
84792
84886
84905

Python解决方案使用生成器理解来检查第一行或行与先前行不同,以在输出文件中发出行:

with open("lines.txt") as fr,open("uniq.txt","w") as fw:
    for line in (x for i,x in enumerate(fr) if i==0 or lines[i-1]!=x):
        fw.write(line)

答案 1 :(得分:-1)

file = open("FileWithDublicates.txt","r");
lines = file.readlines()
lines = set(lines)
file.close
file = open("FileWithDublicates.txt","w");
for line in lines:
    file.write(line)

这应该可以解决问题。 但是换行也只会存在一次