python count用法 - 計算字符串中字符的出現次數




8 Answers

str.count(sub [,start [,end]])

返回[start, end]範圍內子串sub的非重疊次數。 可選參數startend被解釋為切片符號。

>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4
str string

計算字符串中字符出現次數的最簡單方法是什麼?

例如,計算'Mary had a little lamb'出現'a'的次數




正如其他答案所說,使用字符串方法count()可能是最簡單的,但如果您經常這樣做,請檢查collections.Counter

from collections import Counter
str = "Mary had a little lamb"
counter = Counter(str)
print counter['a']



myString.count('a');

更多信息here




正則表達式是非常有用的,如果你想不區分大小寫(當然還有正則表達式的所有權力)。

my_string = "Mary had a little lamb"
# simplest solution, using count, is case-sensitive
my_string.count("m")   # yields 1
import re
# case-sensitive with regex
len(re.findall("m", my_string))
# three ways to get case insensitivity - all yield 2
len(re.findall("(?i)m", my_string))
len(re.findall("m|M", my_string))
len(re.findall(re.compile("m",re.IGNORECASE), my_string))

請注意,正則表達式版本的運行時間長達十倍,只有當my_string非常長時,或者代碼在深循環內時,這可能會成為問題。




str.count(a)是計算字符串中單個字符的最佳解決方案。 但是如果你需要計算比一個更多的字符,那麼你必須多次讀取字符串作為你想要計數的字符。

這項工作的更好方法是:

from collections import defaultdict

string = 'Mary had a little lamb'
chars = defaultdict(int)

for char in string:
    chars[char] += 1

因此,您將得到一個字典,它返回字符串中每個字母的出現次數,如果不存在,則返回0

>>>chars['a']
4
>>>chars['x']
0



count絕對是計算字符串中字符出現的最簡潔高效的方式,但我嘗試用lambda來解決問題,如下所示:

sentence = 'Mary had a little lamb'
sum(map(lambda x : 1 if 'a' in x else 0, sentence))

這將導致:

4

此外,還有一個優點是,如果句子是包含與上述相同字符的子字符串列表,則由於使用了in所以這也給出了正確的結果。 看一看 :

sentence = ['M', 'ar', 'y', 'had', 'a', 'little', 'l', 'am', 'b']
sum(map(lambda x : 1 if 'a' in x else 0, sentence))

這也導致:

4

但是,當然這只在檢查單個字符的出現時才起作用,例如在這個特定情況下的'a'




spam = 'have a nice day'
var = 'd'


def count(spam, var):
    found = 0
    for key in spam:
        if key == var:
            found += 1
    return found
count(spam, var)
print 'count %s is: %s ' %(var, count(spam, var))



這個簡單而直接的功能可能有助於:

def check_freq(str):
    freq = {}
    for c in str:
       freq[c] = str.count(c)
    return freq

check_freq("abbabcbdbabdbdbabababcbcbab")
{'a': 7, 'b': 14, 'c': 3, 'd': 3}



Related

python string count