10

可以说我有:

str = "Hello! My name is Barney!"

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

4

5 回答 5

15

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.

>>>
于 2013-10-08T14:28:25.293 回答
4

使用str.count方法:

>>> s = "Hello! My name is Barney!"
>>> s.count('!')
2

顺便说一句,不要str用作变量名。它隐藏了内置str函数。

于 2013-10-08T14:28:59.073 回答
1

采用

str.count("!")

所以:

if str.count("!") == 2:
   return True
于 2017-01-06T11:29:03.987 回答
0

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

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 并在变量中替换了字符,那么您可以简单地减去这些变量。可能不是这样,但需要考虑一些事情。

于 2013-10-08T15:25:27.243 回答
0

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

蟒蛇2:

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

蟒蛇 3:

>>> len(list(filter(lambda x: x == '!', "Hello! My name is Barney!")))
2
于 2017-01-06T11:58:44.907 回答