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

如果…in-必要时不匹配

如果…in-必要时不匹配

湖上湖 2021-03-28 14:11:39
我有一个单词数据库和一个带有文本行的数据集。每当文本文件的行中也出现一个单词,并且该单词也出现在单词文件中时,我想做个技巧。我的代码如下所示:import ref = open(r"words.txt")print len(flist)d = open(r"text.txt", "r")dlist = d.readlines()for line in flist:    lowline = line.lower()    for word in dlist:        lowword = word.lower()        if lowword in lowline:            *trick*但是,此代码未找到匹配项,尽管有许多单词完全相同。对这个有什么想法吗?
查看完整描述

1 回答

?
鸿蒙传说

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

将单词从数据库保存到第一个单词,set然后对其应用str.strip和应用str.lower。str.strip将删除开头和结尾的空白字符,例如'\n'.etc。


集合提供O(1)查找,并且集合相交将比您当前的O(n^2)方法效率更高。


然后遍历word文件中的每一行并应用str.strip,str.lower首先在集合中搜索它。


with open(r"words.txt") as f1, open(r"text.txt", "r") as f2:


    dlist = set(line.strip().lower() for line in f2)  #set of words from database

    for line in f1:

        line = line.strip().lower()     #use strip to remove '\n'

        words = set(line.split())    #use split to get the words from the line

                                     #and convert it into a set

        common_words = words & dlist  #use set intersection to find common words

        for word in common_words:  

           *trick* 

请替换f1并f2适当地替换,因为我很困惑哪个是数据库,哪个是文本数据集。


查看完整回答
反对 回复 2021-04-06
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

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