【问题标题】:Comparing lines in two files to remove if they equal [duplicate]比较两个文件中的行以删除它们是否相等[重复]
【发布时间】:2017-02-01 12:54:03
【问题描述】:

我正在打开两个文件 - 一个包含用于比较的新文件,另一个包含我需要从该文件中删除的流行语。到目前为止,我有这个功能:

def remove(file, buzz):
    #outer for loop cycles through the buzz file
    for line in buzz:
        #inner for loop cycles through the new file
        for line2 in file:
            if (line==line2):
                file.remove(line2)
            else:
                continue

其中file是在main()中打开并传递给此的新文件,buzz是正在打开并从main()传递的buzz文件。

删除部分不起作用,新文件没有更改。

有什么建议吗?

【问题讨论】:

  • 一方面,文件对象没有remove 方法。
  • 两个文件是否每行一个字?

标签: python file-comparison


【解决方案1】:

打开文件数据并将其放入列表中:

file_data = [line.strip() for line in open(file)]
buzz_data = [line.strip() for line in open(buzz)]

然后过滤掉单词:

new = [line for line in file_data if line not in buzz_data]

最后将新数据写入文件:

with open(file,"w") as f:
    for i in new:
        f.write(i+"\n")
f.close()

【讨论】:

    【解决方案2】:

    先读取每个文件的内容,放入列表中:

    a_list = open(file_a).read().splitlines()
    b_list = open(file_b).read().splitlines()
    

    然后删除a_list中b_list中的单词:

    a_list = [word for word in a_list if word not in b_list]
    

    a_list 现在只包含不在 b_list 中的单词

    【讨论】:

    • 如果每个单词都用换行符分隔,这将起作用,否则a_list 将包含不在b_list 中的单词行。
    • 是的,这假设每行一个单词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多