与另一个 txt 文件相比,如何查看 txt 文件的唯一值?
How to see unique values of a txt file with compared to another txt file?
我有两个 txt 文件,每一行都是一个条目。例如;
#first txt file
Jonathan25
Donald32
Ethan21
mjisgoat
#second txt file
Ethan21
leonardo1111
michalengeloo
Jonathan25
我如何构建我的代码来提供存在于第二个 txt 文件但不存在于第一个 txt 文件[=21]中的唯一值=]?实际上,应该将第二个 txt 文件的第一个元素与第一个 txt 文件的所有元素进行比较。然后,如果没有匹配项,我需要查看值。在这种情况下,我想得到的结果是 "leonardo1111" 和 "michalengeloo".
使用 awk:awk 'FNR==NR {a[[=10=]]++; next} !a[[=10=]]' 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
所以你可以尝试将file1的内容读入a,将file2的内容读入b。
Python 中的简单方法是将两个文件读入集合,然后应用 set difference。我们还应该确保换行符被剥离,以涵盖像 Jonathan25\n
和 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'}
另一种方法:
集合算术,https://stromberg.dnsalias.org/~strombrg/set-arithmetic/
使用集合算术,您可以:
$ set-arithmetic --difference second.txt first.txt
michalengeloo
leonardo1111
写在Python。它将输入文件的每一行视为一个集合元素。
您可以在unix 中使用join 命令。对每个文件进行排序。那么
$ join -1 1 -2 1 -v 2 -o 0 file1 file2
或者您可以使用 python:
1. 创建一个集合。逐行循环 file1 并将单词放入集合中。
2. 循环遍历 file2,并在刚刚为 file2 中的每个单词创建的集合中进行搜索。集合中找不到的就是你需要识别的词。
我有两个 txt 文件,每一行都是一个条目。例如;
#first txt file
Jonathan25
Donald32
Ethan21
mjisgoat
#second txt file
Ethan21
leonardo1111
michalengeloo
Jonathan25
我如何构建我的代码来提供存在于第二个 txt 文件但不存在于第一个 txt 文件[=21]中的唯一值=]?实际上,应该将第二个 txt 文件的第一个元素与第一个 txt 文件的所有元素进行比较。然后,如果没有匹配项,我需要查看值。在这种情况下,我想得到的结果是 "leonardo1111" 和 "michalengeloo".
使用 awk:awk 'FNR==NR {a[[=10=]]++; next} !a[[=10=]]' 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 所以你可以尝试将file1的内容读入a,将file2的内容读入b。
Python 中的简单方法是将两个文件读入集合,然后应用 set difference。我们还应该确保换行符被剥离,以涵盖像 Jonathan25\n
和 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'}
另一种方法: 集合算术,https://stromberg.dnsalias.org/~strombrg/set-arithmetic/
使用集合算术,您可以:
$ set-arithmetic --difference second.txt first.txt
michalengeloo
leonardo1111
写在Python。它将输入文件的每一行视为一个集合元素。
您可以在unix 中使用join 命令。对每个文件进行排序。那么
$ join -1 1 -2 1 -v 2 -o 0 file1 file2
或者您可以使用 python: 1. 创建一个集合。逐行循环 file1 并将单词放入集合中。 2. 循环遍历 file2,并在刚刚为 file2 中的每个单词创建的集合中进行搜索。集合中找不到的就是你需要识别的词。