比较两个文件并从第二个文件中删除单词 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()
从这里engwrds和ws是strings,所以大家可以多多比较不同的方式:
differences = set(engwrds.split()).symmetric_difference(set(ws.split()))
print(differences)
Output: {'beautiful', 'is', 'want', 'while', 'wild', 'your'}
显然,这种比较只有在你的单词被空格分隔时才有效,但从这里你会更好地了解如何解决问题。
我正在尝试比较两个文件并使用函数获取差异。
第一个文件包含英文单词 - 一个接一个 (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)
你能解释一下我在这里犯的错误吗?我提到了多个示例,例如
这就是 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()
从这里engwrds和ws是strings,所以大家可以多多比较不同的方式:
differences = set(engwrds.split()).symmetric_difference(set(ws.split()))
print(differences)
Output: {'beautiful', 'is', 'want', 'while', 'wild', 'your'}
显然,这种比较只有在你的单词被空格分隔时才有效,但从这里你会更好地了解如何解决问题。