Python 文字列をカウントする方法まとめ


.count()

count()で文字列中に文字が何ヶ所に存在するかを求めます。

str = 'abcbcabcaca'

print str.count('a') #=> 4

print str.count('b') #=> 3

print str.count('bc') #=> 3


存在する文字をすべてカウントする

文字列中の文字をすべてカウントするにはcollections.Counterを使用します。カウントした結果となる数値は辞書型と同じように取り出せます。 most_common()でCounterオブジェクトをリスト化するだけでなく、上位数個のみを抽出することも可能です。

from collections import Counter

str = 'abcbcabcaca'

counter = Counter(str)

print counter
#=> Counter({'a': 4, 'c': 4, 'b': 3})

print counter['b'] #=> 3

print counter.most_common()
#=> [('a', 4), ('c', 4), ('b', 3)]

print counter.most_common(2)
#=> [('a', 4), ('c', 4)]


数字・アルファベットのみカウントする

文字列から数字またはアルファベットのみカウントしたい場合はre.findall()とlen()を使用します。正規表現の部分で数字のみ・アルファベットのみと指定します。

#coding: utf-8
import re

#数字のみ
print len(re.findall('\d', '123abc45cde67')) #=> 7

#大文字のみ
print len(re.findall('[a-z]', '123abc45CDE67')) #=> 3

#小文字のみ
print len(re.findall('[A-Z]', '123abc45CDE67')) #=> 3

#アルファベットのみ
print len(re.findall('[a-zA-Z]', '123abc45CDE67')) #=> 6

#数字とアルファベットと下線
print len(re.findall('\w', '123@abcDE#a_b')) #=> 11