比较2个文本文件并输出差异[关闭]

Posted

技术标签:

【中文标题】比较2个文本文件并输出差异[关闭]【英文标题】:Compare 2 text files and output a difference [closed] 【发布时间】:2022-01-03 21:07:03 【问题描述】:

我有两个文本文件:

第一个文本文件:

email1@domain.com:password
email2@domain.com:password
email3@domain.com:password
email4@domain.com:password
email5@domain.com:password

第二个文本文件:

email3@domain.com:password
email5@domain.com:password

无论行号​​如何,如何输出它们之间的差异?我要输出第三个文件:

第三个文本文件:

email1@domain.com:password
email2@domain.com:password
email4@domain.com:password

【问题讨论】:

您想只匹配用户名还是同时匹配用户名和密码?你的例子模棱两可 两者,你能发布一个只有用户名的例子吗? 另外,您在这里展示了file2中缺少的那些,如果file1中缺少file2中的一行怎么办? 好的,让我解释一下。第一个文件包含所有原始电子邮件和密码。第二个文件包含其中的一些(来自第一个文件),所以我想将差异输出到第三个文本文件中,以查看第一个文件中缺少哪些行。 在batch-file 中使用findstr: findstr /V /I /X /L /G:"2nd.txt" "1st.txt" > "3rd.txt" 【参考方案1】:

假设用户名和密码用冒号分隔,那么你可以这样做:

files = ['file1.txt', 'file2.txt']
usernames = [set(), set()]
for i, file in enumerate(files):
    with open(file) as infile:
        for line in infile:
            usernames[i].add(line.split(':')[0])
for d in usernames[0] - usernames[1]:
    print(d)

【讨论】:

【参考方案2】:
file1Lines = open("file1.txt", "r").readlines()
file2Lines = open("file2.txt", "r").readlines()
file1Lines.close()
file2Lines.close()
file3LinesOutput = []
for line in file1Lines:
    if line not in file2Lines:
        file3LinesOutput.append(line)
file3 = open("file3.txt", "w")
file3.writelines(file3LinesOutput)
filr3.close()

这应该可以满足您的要求。它会将第一个文件中的每一行添加到第三个文件中,而不是第二个文件中的每一行

【讨论】:

【参考方案3】:

你可以把它拆分成一个列表。

假设第一个文本存储在变量 first_text 中,第二个文本存储在 second_text 中。

由于唯一的区别是断线,您可以将它们分开:

first_list = first_text.split('\n')
second_list = second_text.split('\n')

所以,现在您已将所有电子邮件分隔在列表中。从这里您可以比较两个列表并存储在 output_text 中。

output_list = first_list
for email_first in first_list:
    for email_second in second_list:
        if (email_first == email_second):
            output_list.remove(email_first)

请注意,这是针对您的具体示例,并未正确涵盖第二个列表大于第一个列表的情况。

【讨论】:

以上是关于比较2个文本文件并输出差异[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

输出图像到文本文件的差异

Python比较文件差异,difflib类库的使用

比较两个文本文件 - 并将差异保存到新文件

Linux命令比较文件差异 diff

python difflib模块实现两个文件差异对比,并输出html格式。

通过两个文本文件中的特定模式获取差异文件