home changes contents help options

032:特定の文字・文字列の出現回数を調べる

文字列が何回現れるか数える

ある文字列が何回現れるか数えるには文字列メソッド count を使います。

>>> s = 'aaaabbaabbaa\n'
>>> s.count('aa')
4

文字が何回現れるか数える

Python には文字型はなく、文字の表現に長さ 1 の文字列を使います。 なので特定の文字が何回現れるか数えるには count メソッドがそのままつかえます。

>>> s = 'aaaabbaabbaa\n'
>>> s.count('a')
8

正規表現に何回マッチするか数える

ある正規表現に重複せずマッチする回数を数えるには re.findall メソッドにて得られるマッチした文字列の リストの長さを数えます。

>>> import re
>>> s = 'aaaabbaabbaa\n'
>>> re.findall('a+', s)
['aaaa', 'aa', 'aa']
>>> len(re.findall('a+', s))
3

メモリ量節約のため文字列リストを一度に得ないようにするには re.findallre.finditer に置き換え、ループを回します。以下のようになります。

>>> i = 0
>>> for m in re.finditer('a+', s):
...   i += 1
...
>>> print i
3

もしくは次のようにします。

>>> i = -1
>>> for i, m in enumerate(re.finditer('a+', s)):
...   pass
...
>>> i += 1
>>> print i
3