2013-10-08 207 views

回答

9

是的,你可以用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. 

>>> 
+0

'如果mystr.count(「!」)== 2:打印TRUE'可以寫得更簡潔就像'print mystr.count('!')== 2'一樣,如果你想要可能的'False'打印輸出,我認爲你在大多數情況下都是這樣。 – kqr

+0

@kqr - 的確如此。我只是在'if'塊中使用'count'來演示。 – iCodez

3

使用str.count方法:

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

BTW,不要使用str可變名稱。它陰影內置str功能。

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,並且在變量中替換了字符,出於某種其他原因,那麼你可以簡單地減去這些變量。可能不是這種情況,但需要考慮。

0

使用

str.count("!") 

所以:

if str.count("!") == 2: 
    return True 
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 
相關問題