我有两个txt文件,每一行都是一个条目。例如;
#first txt file
Jonathan25
Donald32
Ethan21
mjisgoat
#second txt file
Ethan21
leonardo1111
michalengeloo
Jonathan25
我如何形成我的代码,以给出存在于第二个txt文件中但不存在于第一个txt文件中的唯一值?实际上,第二个txt文件的第一个元素应该和第一个txt文件中的所有元素进行比较。然后,如果没有匹配项,我需要查看值。在这种情况下,我希望得到的结果是"leonardo1111">和"michalengeloo">
Python中的简单方法是将两个文件读取到集合中,然后应用集合差异。我们还应该确保换行符被剥离,以覆盖像Jonathan25n
和Jonathan25
这样的情况,它们应该相等,但如果包括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编写的。它将输入文件的每一行视为一个集合元素。