Python正则表达式搜索文本文件计数子字符串

时间:2016-10-17 20:41:13

标签: python regex full-text-search

我试图在python中使用正则表达式语句来搜索文本文件并计算用户定义的单词出现的次数。当我运行我的代码时,不是得到文件中唯一单词出现次数的总和,而是计算该文件中包含该单词的数字行。

示例:单词' apple'在文本文件中存在56次。出现在总共63行文本中的20行。当我运行我的代码时,控制台会输出' 20'为了计算苹果'而不是正确的' 56'

我认为通过使用re.findall()方法可以解决这个问题,但事实并非如此。

import re

#If user selects Regular Expressions as their search method
elif user_search_method == "2":
    print "\n>>> You selected the Regular Expressions search method"
    f = open(filename, 'r')
    words = sum(1 for w in f if re.findall(user_search_value, w, re.M|re.I))
    f.close()
    print("Your search value of '%s' appears %s times in this file" % (user_search_value, words))

1 个答案:

答案 0 :(得分:0)

如果匹配,你只需加1,我猜你不希望搜索过线,所以你可以这样做:

words = sum(len(re.findall(user_search_value, w, re.M|re.I)) for w in f)