如果…in-必要时不匹配

我有一个单词数据库和一个带有文本行的数据集。每当文本文件的行中也出现一个单词,并且该单词也出现在单词文件中时,我想做个技巧。我的代码如下所示:


import re

f = 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*

但是,此代码未找到匹配项,尽管有许多单词完全相同。对这个有什么想法吗?


湖上湖
浏览 133回答 1
1回答

鸿蒙传说

将单词从数据库保存到第一个单词,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适当地替换,因为我很困惑哪个是数据库,哪个是文本数据集。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python