如果单词存在于另一个文本文件中,请从文本文件中删除单词

时间:2018-11-28 14:21:31

标签: python

我创建了一个txt.file,其中包括五个其他文本文件(全部为text.txt)。我也有一个文本文件,每行都有单词(删除words.txt)。我想从alltext.txt中删除removewords.txt中的单词,而无需创建新的文本文件,也无需手动从removewords.txt中编写单词。

我曾经考虑过使用集合,但是如何处理呢?

我的文件合并如下:

files=["file1.txt", "file2.txt"...."file5.txt"]
with open("compare_out.txt", "w") as fout:

for file in files:
    with open (file) as complete_file:
        for line in complete_file:
            fout.write(line)

有什么建议吗?非常感谢

2 个答案:

答案 0 :(得分:0)

我将执行以下操作:

  1. 将“ removewords.txt”中的所有单词读入名为remove_words的列表中
  2. 将“ alltext.txt”中的所有单词读入名为all_words的列表中
  3. 以写入模式("w")打开文件“ alltext.txt”,并按以下方式向其写入内容:
    • 对于all_words中的每个单词,检查该单词是否在列表remove_words中。如果不是,请将其写入“ alltext.txt”

这些步骤是否足够详细,以便您可以解决问题?

如果没有,请在下面评论您遇到的问题。

答案 1 :(得分:0)

如果这不是问题,则可以使用split将所有要删除的单词加载到集合中,然后在将每个单词写入输出文件之前对其进行检查。 分割(Split)根据定界字符将字符串分成多个列表元素-对于单词,我们可以使用空格字符" "来将每个单词与其他单词分开。

rm_word_file = open('removewords.txt', 'r')
remove_words = set(rm_word_file.read().split(" "))
rm_word_file.close()
files=["file1.txt", "file2.txt"...."file5.txt"]

with open("compare_out.txt", "w") as fout:

    for file in files:
        with open (file) as complete_file:
            for line in complete_file:
                for word in line.split(" "):
                    if(word not in remove_words):
                        fout.write(line)

还有其他需要考虑的问题,如果文本正文中存在标点符号,您将如何处理?

您可以删除所有标点符号,但是将其和它一起当作一个单词使用,这可能不是预期的行为。