Python 如果单词存在于另一个文本文件中,则从文本文件中删除它们

Python 如果单词存在于另一个文本文件中,则从文本文件中删除它们,python,Python,我创建了一个txt.txt文件,由五个其他文本文件(全部为text.txt)组成。我还有一个文本文件,每行都有文字(删除words.txt)。我想从alltext.txt中删除removewords.txt中的单词,无需创建新的文本文件,也无需手动写入removewords.txt中的单词 我曾考虑过使用集合,但这是一个令人困惑的问题,但如何处理呢 我的mergin文件如下所示: files=["file1.txt", "file2.txt"...."file5.txt"] with open(

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

我曾考虑过使用集合,但这是一个令人困惑的问题,但如何处理呢

我的mergin文件如下所示:

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)

有什么建议吗?非常感谢

我将做以下工作:

  • 将“removewords.txt”中的所有单词读入名为
    remove\u words
  • 将“alltext.txt”中的所有单词读入名为
    all\u单词的列表中
  • 以写入模式(
    “w”
    )打开文件“alltext.txt”,并按如下方式向其写入内容:
    • 对于
      所有单词中的每个单词
      ,检查该单词是否在列表中
      删除单词
      。如果不是,则将其写入“alltext.txt”
  • 这些步骤是否足够详细,以便您能够解决问题


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

    如果没有问题,您可以使用
    拆分将要删除的所有单词加载到集合中,然后在将其写入输出文件之前检查每个单词。
    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)
    
    另外要考虑的是,如果文本正文中有标点符号,您将如何处理


    您可以删除所有标点符号,但它和它将被视为同一个单词,这可能不是预期的行为。

    存在缩进错误,您应该关闭“removewords.txt”。这对我不起作用。文本重复了几次:(你能更深入地描述一下你遇到的错误/问题吗?每个文本段(以换行符分隔)在输出文件中打印五次,这可能是因为有5个文件没有?我不知道你的问题到底想要什么->这5个文本文件你想如何组合它们?因为目前我们只是一个一个地阅读它们t一次。谢谢你给我一个很好的答案!但是当我这样做的时候,我会对文本进行更多的操作。有没有办法只从removewords.txt中删除单词并用空格替换它们?一个(文本)文件基本上只是磁盘上的一个字符序列。这个序列需要是连续的,可能没有“洞”如果你想删除文件中间的一些单词,你就必须“移动”所有的单词来填补空白。最简单的选择是重新编写整个文件(如我上面所示)。性能对你的程序来说真的是个问题吗?你的文本文件有多大?