Python字符串,re.match,循环

时间:2014-12-30 16:33:52

标签: python python-2.7

好的家伙我得到了4个例子: 我爱#hacker, 我在#Hacker的挑选卡挑战赛中得到27分, 我刚刚报名参加夏季杯@hacker, 黑客联合创始人哈里的有趣谈话,

我需要找到" hacker"这个词多少次?重复。

import re
count = 0
res = re.match("hacker")
for res in example:
    count += 1
    return count

这是我的代码"到目前为止"因为我不知道如何找出这个练习的解决方案

4 个答案:

答案 0 :(得分:1)

string1="hello Hacker what are you doing hacker"
a=re.findall("hacker",string1.lower())
print (len(a))

输出:

>>> 
2
>>> 

re.findall 将找到您编写的所有字符串。 编辑:我也添加了 string1.lower(),如Rawing所述。

  

您的代码无效,因为 match()找到第一个匹配项   只要。不是全部。

答案 1 :(得分:1)

这样:

the_string = """I love #hacker, I just scored 27 points in the Picking Cards challenge on #Hacker, I just signed up for summer cup @hacker, interesting talk by hari, co-founder of hacker,"""
num = the_string.lower().count("hacker")

答案 2 :(得分:1)

您可以使用re.findall

my_string = """I love #hacker, I just scored 27 points in the Picking Cards challenge on #Hacker, I just signed up for summer cup @hacker, interesting talk by hari, co-founder of hacker,"""
>>> import re
>>> len(re.findall("hacker",my_string.lower()))
4

re.findall为你提供字符串中所有匹配的子字符串,然后len会告诉你它们中有多少个。

str.lower()用于将字符串转换为小写

而不是str.lower你也可以使用re.IGNORECASE FLAG:

>>> len(re.findall("hacker",my_string,re.IGNORECASE))
4

答案 3 :(得分:0)

你可以使用count()函数,在拆分字符串后不需要正则表达式,如果你想匹配大写字母,你需要使用lower函数:

>>> l='this is a test and not a Test'
>>> map(lambda x: x.lower() ,l.split()).count('test')
2
>>> l='this is a test and not a rtest'
>>> map(lambda x: x.lower() ,l.split()).count('test')
1