使用第二个文本文件作为参考Python,在文本文件中查找完全匹配



我想在文本文件中搜索第二个文本文件中指定的完全匹配项。例如,文件1包含一个关于水果的文本,而文本文件2包含以下单词:

Apple
Banana
Orange
Peach

现在,如果出现上述单词之一,则应搜索文件1的每一行。如果是这样的话,它应该打印出来,包括发现频率(正如你所看到的,输出中不应该有重复):

Apple 2
Orange 5

为此,到目前为止,我得到了以下代码:

def search_terms():
    with open("searchterms.txt", "r") as st:
        search_terms = [line.rstrip('n') for line in st]
    return search_terms
def exact_match(phrase, word):
    b = r'(s|^|$)'
    return re.match(b + word + b, phrase, flags=re.IGNORECASE)
f = open("file_to_search.txt", "r")
searchstr = search_terms()
for line in f:
    for word in searchstr:
        if exact_match(line,word):
            print(word)
f.close()

一个问题是,包含搜索项的文件大约有45k行。每一行都是要在第一个文件中查找的一个可能的字符串。因此,目前执行时间非常短。

我想必须有一个更有效的解决方案来做到这一点。如果有人能帮忙就太好了。

您可以将所有搜索项的所有小写存储在一个集合中,并像这样更改代码:

编辑:要打印频率,您可以使用字典

def search_terms():
    with open("searchterms.txt", "r") as st:
        search_terms = [line.rstrip('n').lower() for line in st]
    return search_terms
terms = set(search_terms())
freq = {}
for line in f:
   for word in line.split():
       if word.lower() in terms:
           if word in freq:
               freq[word]++
           else:
               freq[word]=1
for word,frequency in freq.iteritems():
    print word,frequency

如本文所述,在set中检查in的平均时间复杂度为O(1)。

最新更新