【问题标题】:How to count occurences of a word following by a special character in a text using python regular expression如何使用python正则表达式计算文本中特殊字符后出现的单词的出现次数
【发布时间】:2018-10-23 18:03:52
【问题描述】:

我想使用 python 计算文本中“人”一词的出现次数。为此,我使用 Counter 和 Python 的正则表达式:

    for j in range(len(paragraphs)):
        text = paragraphs[j].text
        count[j] = Counter(re.findall(r'\bpeople\b' ,text))

然而,这里我的代码没有考虑到人的出现。人们!人们? 如何修改它以计算单词后跟特定字符的情况?

感谢您的帮助,

【问题讨论】:

  • 您的正则表达式看起来正确(并且适用于我的测试)。我认为您的错误是Counter()。你看到了什么错误?

标签: python regex counter


【解决方案1】:

您可以在正则表达式中使用可选的字符组:

r'\bpeople[.,!?]?\b'

那个?指定它可以出现 0 次或 1 次 - [] 指定允许使用哪些字符。无需转义 [] 中的 .(或 f.e. ()*+?),尽管它们对正则表达式有特殊含义。如果您想在[] 中使用-,则需要对其进行转义,因为它用于表示集合[1-5] == 12345 中的范围。

见:https://docs.python.org/3/library/re.html#regular-expression-syntax

[] 用于表示一组字符。在一组中:

字符可以单独列出,例如[amk] 将匹配“a”、“m”或“k”。 可以通过给出两个字符并用'-'分隔它们来表示字符范围,例如 [az] 将匹配任何小写 ASCII 字母,[0-5][0-9] 将匹配所有两位数字00 到 59,并且 [0-9A-Fa-f] 将匹配任何十六进制数字。 [...]

【讨论】:

    【解决方案2】:
    people[?.!]
    

    这将允许您只与人匹配?人们。和/或人!

    因此,如果您添加更多 Counter(re.finall(,您将能够执行类似的操作

    #This will only match people
    count[j] = Counter(re.findall(r'people\s' ,text))
    
    #This will only match people?
    count[j] = Counter(re.findall(r'people\?' ,text))
    
    #This will only match people.
    count[j] = Counter(re.findall(r'people\.' ,text))
    
    #This will only match people!
    count[j] = Counter(re.findall(r'people\!' ,text))
    

    您需要使用\ 来转义特殊字符

    当您尝试使用 python 正则表达式时,这也是一个很好的资源:@​​987654321@ 该网站还有正则表达式备忘单

    【讨论】:

    • 不需要将| 放在 [] 中,除非您也想允许它作为字符
    【解决方案3】:

    您可以在 Regex 模式的“人”部分的末尾使用修饰符语句。请尝试以下操作:

    for j in range(len(paragraphs)):
        text = paragraphs[j].text
        count[j] = Counter(re.findall('r\bpeople[.?!]?\b', text)
    

    那个?用于零个或多个量词。上面的模式似乎适用于 regex101.com,但我还没有在 Python shell 中尝试过。

    【讨论】:

    • 我去编辑了我的回复以删除多余的反斜杠。
    【解决方案4】:

    它必须使用正则表达式吗?为什么不只是:

    len(text.split("people"))-1
    

    【讨论】:

      猜你喜欢
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      相关资源
      最近更新 更多