比较两个文件并从第二个文件中删除单词 Python

Compare two files and remove the words from the second file Python

我正在尝试比较两个文件并使用函数获取差异。

第一个文件包含英文单词 - 一个接一个 (engwrds.txt),第二个文件是网络抓取文本的文本文件 (ws.txt)。我想要实现的是比较两个文件并从 ws.txt 中删除单词并将它们写入不同的文件。

在网络抓取的文件中,有单词和句子。但是在另一个文件中,单词是一个接一个地放置的。

我尝试了以下代码,但它创建了一个空白输出文件。

with open('ws.txt', 'r', encoding='utf-8') as file1:
    with open('engwrds.txt', 'r', encoding='utf-8') as file2:
        same = set(file1).intersection(file2)

same.discard('\n')

with open('output_file.txt', 'w', encoding='utf-8') as file_out:
    for line in same:
        file_out.write(line)

然后我试了这个,它根本不打印任何输出。

from pathlib import Path

with open('engwrds.txt', 'r', encoding='utf-8') as fin:
    exclude = set(line.rstrip() for line in fin)

with fileinput.input('ws.txt', inplace=True) as f:
    for line in f:
        if not exclude.intersection(Path(line.rstrip()).parts):
            print(line, end='')

以下代码也不会打印任何输出。

with open('op11-Copy1.txt', 'r') as file1:
    with open('commonwords.txt', 'r') as file2:
        dif = set(file1).difference(file2)
        
dif.discard('\n')
        
with open('diff.txt', 'w') as file_out:
    for line in dif:
        file_out.write(line)

你能解释一下我在这里犯的错误吗?我提到了多个示例,例如 , this。但我无法弄清楚这个问题。理想情况下,我想想出一个函数来完成这个任务。

这就是 ws.txt 文件的样子。

这就是 engwrds.txt 的样子。

输出文件如下所示。

只需在不同的变量中打开您的文件并进行比较。 例如:

假设文件ws.txt(抓取的文件)包含:

你的世界很美

文件 engwrds.txt 包含这些词(一个接一个):

当世界想要狂野的时候

在不同的变量中打开每一个:

with open('engwrds.txt', 'r', encoding='utf-8') as file:
    engwrds = file.read()

with open('ws.txt', 'r', encoding='utf-8') as file:
    ws = file.read()

从这里engwrdswsstrings,所以大家可以多多比较不同的方式:

differences = set(engwrds.split()).symmetric_difference(set(ws.split()))
print(differences)

Output: {'beautiful', 'is', 'want', 'while', 'wild', 'your'}

显然,这种比较只有在你的单词被空格分隔时才有效,但从这里你会更好地了解如何解决问题。