让我说我有:
str = "Hello! My name is Barney!"
是否有一个或两个行方法来检查此字符串是否包含两个!
?
答案 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)