如何查看与另一个txt文件相比的txt文件的唯一值



我有两个txt文件,每一行都是一个条目。例如;

#first txt file
Jonathan25
Donald32
Ethan21
mjisgoat
#second txt file
Ethan21
leonardo1111
michalengeloo
Jonathan25

我如何形成我的代码,以给出存在于第二个txt文件中但不存在于第一个txt文件中的唯一值?实际上,第二个txt文件的第一个元素应该和第一个txt文件中的所有元素进行比较。然后,如果没有匹配项,我需要查看值。在这种情况下,我希望得到的结果是"leonardo1111">"michalengeloo">

Python中的简单方法是将两个文件读取到集合中,然后应用集合差异。我们还应该确保换行符被剥离,以覆盖像Jonathan25nJonathan25这样的情况,它们应该相等,但如果包括n,就不会相等。

with open("file1.txt") as f1, open("file2.txt") as f2:
s1 = {line.strip() for line in f1}
s2 = {line.strip() for line in f2}
print(s2.difference(s1))

输出:

{'michalengeloo', 'leonardo1111'}

您可以在unix中使用join命令。对每个文件进行排序。然后

$ join -1 1 -2 1 -v 2 -o 0 file1 file2

或者您可以使用python:1.创建一个集合。逐行循环浏览file1,并将单词放入集合中。2.循环浏览file2,并在刚刚为file2中的每个单词创建的集合中进行搜索。那些没有在集合中找到的单词是你需要识别的单词。

使用awk:awk 'FNR==NR {a[$0]++; next} !a[$0]' first_txt_file second_txt_files

Python,使用集合:https://docs.python.org/3/tutorial/datastructures.html#sets

a = [1,2,3,4]
b = [2,3,4,5]
c = filter(lambda x: x not in a, b)

在这种情况下,c将只包含1个元素-5因此,您可以尝试将文件1的内容读入a,将文件2的内容读入b。

另一种方式:集合算术,https://stromberg.dnsalias.org/~strombrg/set算术/

使用集合算术,您可以:

$ set-arithmetic --difference second.txt first.txt 
michalengeloo
leonardo1111

它是用Python编写的。它将输入文件的每一行视为一个集合元素。

最新更新