检查该字符串包含两个相同字符的方法?

时间:2013-10-08 14:27:34

标签: python string

让我说我有:

str = "Hello! My name is Barney!"

是否有一个或两个行方法来检查此字符串是否包含两个!

5 个答案:

答案 0 :(得分:10)

是的,您可以使用字符串的count方法轻松地在一行中获得解决方案:

>>> # I named it 'mystr' because it is a bad practice to name a variable 'str'
>>> # Doing so overrides the built-in
>>> mystr = "Hello! My name is Barney!"
>>> mystr.count("!")
2
>>> if mystr.count("!") == 2:
...     print True
...
True
>>>
>>> # Just to explain further
>>> help(str.count)
Help on method_descriptor:

count(...)
    S.count(sub[, start[, end]]) -> int

    Return the number of non-overlapping occurrences of substring sub in
    string S[start:end].  Optional arguments start and end are
    interpreted as in slice notation.

>>>

答案 1 :(得分:3)

使用str.count方法:

>>> s = "Hello! My name is Barney!"
>>> s.count('!')
2
顺便说一句,不要使用str作为变量名。它影响内置str功能。

答案 2 :(得分:1)

有很多种方法可以找到字符串中的字符数:

string  = "Hello! My name is Barney!"

方式:

string.count('!') == 2 #best way

len([x for x in string if x == '!']) == 2 #len of compresion with if

len(string)-len(string.replace('!','')) == 2 #len of string - len of string w/o character

string[string.find('!')+1:].find('!')>0 #find it, and find it again, at least twice

count是最好的,但我喜欢考虑其他方式,因为我有时会发现冗余的代码/变量,这取决于你当然在做什么。假设你已经拥有字符串的len和变量中替换字符的字符串的len,由于某些其他原因,那么你可以简单地减去这些变量。可能不是这样,但需要考虑的事情。

答案 3 :(得分:0)

使用

str.count("!")

所以:

if str.count("!") == 2:
   return True

答案 4 :(得分:0)

除了str.count,我认为filter也是一种可行的方式:

Python 2:

>>> len(filter(lambda x: x == '!', "Hello! My name is Barney!"))
2

Python 3:

>>> len(list(filter(lambda x: x == '!', "Hello! My name is Barney!")))
2