【问题标题】:Python regular expression search text file count substringPython正则表达式搜索文本文件计数子字符串
【发布时间】:2016-10-17 20:41:12
【问题描述】:

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

示例:“apple”这个词在文本文件中出现了 56 次。出现在总共 63 行文本中的 20 行中。当我运行我的代码时,控制台打印'20'作为'apple'的计数而不是正确的'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 for w in f w 是一行,您根据if re.findall(...) 对其进行过滤。如果你想计算找到的匹配数,求和len(re.findall(...))

标签: python regex full-text-search


【解决方案1】:

如果匹配,您只需添加 1,我猜您不希望搜索超出行数,因此您可以这样做:

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

【讨论】:

  • 成功了!谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多