为了账号安全,请及时绑定邮箱和手机立即绑定

如何在另一个文件中搜索一个文件中的字符串

如何在另一个文件中搜索一个文件中的字符串

慕运维8079593 2023-10-11 15:48:37
我需要在 python 中扫描 2 个文件,并说出 file1 中的哪些单词也在 file2 中。我制作了一个包含 file2 中所有单词的列表,然后扫描 file1 中的行是否在列表中。所以这工作得很好,但是大文件(比如 500k)可能需要 1 小时以上,我想知道是否有更快的方法提前致谢(defined var etc and files)a = []for line in var:    a += [line]teller = 0for line1 in new_file:    if line1 not in a:        print(line1, file=filter, end='')    else:        teller += 1        print(line1, file=bad, end='' )print('There were', teller, 'lines that were in the old file.')
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

更快的替代方法是使用集合(只要您可以将两个文件的内容保留在内存中):


with open('a.txt', 'r') as a, open('b.txt', 'r') as b:

    a_content = set(a)

    b_content = set(b)


result = a_content.intersection(b_content)


查看完整回答
反对 回复 2023-10-11
?
森林海

TA贡献2011条经验 获得超2个赞

如果您担心速度,那么您应该使用操作系统设施,而不是 Python 循环。通常,查找单独行的最快方法是对两个文件进行排序,然后进行简单的文件比较。如果你坚持使用Python,那也是一种更快的方法。



查看完整回答
反对 回复 2023-10-11
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您的方法可以工作,但效率非常低,因为您正在遍历 file2 以查找 file1 中的每个单词/行。尝试将 file1 和 file2 都转为集合,然后比较集合;我很确定 Python 有类似 .intersect 或 .intersection 的东西来比较两个集合、列表、数组或其他数据结构。



查看完整回答
反对 回复 2023-10-11
  • 3 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信