python regex计算只有一个特定单词的字符串中的行数

时间:2017-08-19 13:28:15

标签: python regex

我想找到给定字符串是字符串中一行上唯一单词的次数。例如,如果单词为"max"且字符串为:

str = """max
     hello max
     max hi
     max"""

正确的输出是2

我尝试使用re.findall函数:

from re import findall
findall(r'^\max\n', str)

但它只计算了一次"max"

['max\n']

4 个答案:

答案 0 :(得分:1)

您可以使用sum内置功能:

>>> string = \
"""max
hello max
max hi
max"""
>>> sum('max' == line.strip() for line in string.split('\n'))
2

上述代码的工作原理是将字符串max等于string中的当前行的次数相加。总和将是max在一条线上出现的次数。

答案 1 :(得分:1)

这就是工作:

import re

str = """max max
     hello max
      max
      max
      max
      max
     max hi
     max"""


res = re.findall(r"(?m)^\s*max\s*$", str)
print res
print len(res)

<强>输出:

['      max', '      max', '      max', '      max', '     max']
5

答案 2 :(得分:0)

你可以试试这个:

import re

str = """max
  hello max
  max hi
  max"""

results = len(re.findall("^max|max$", str))

输出:

2

答案 3 :(得分:0)

string = """max
     hello max
     max hi
     max"""
word='max'
print(sum([1 for elem in string.split('\n') if (word == elem.strip())]))

你也可以尝试这个