Python で文字列内の文字の出現をカウントする

Hiten Kanwar 2023年10月10日
  1. Python で count() 関数を使用して文字列に含まれる文字の数をカウントする
  2. Python で collections.Counter を使用して文字列内の文字の出現をカウントする
  3. Python で正規表現を使用して文字列内の文字の出現をカウントする
  4. Python で defaultdict を使用して文字列内の文字の出現をカウントする
  5. Python で pandas.value_counts() を使用して文字列内の文字の出現をカウントする
  6. Python で lambda 式を使用して文字列内の文字の出現をカウントする
  7. Python で for ループを使用して文字列内の文字の出現をカウントする
Python で文字列内の文字の出現をカウントする

プログラミングでは、文字列は文字のシーケンスです。

このチュートリアルでは、Python で文字列内の文字の出現回数をカウントする方法を紹介します。

Python で count() 関数を使用して文字列に含まれる文字の数をカウントする

count() 関数を使用して、文字列内の値の出現をカウントできます。指定された文字列に値が表示される回数を返します。

例えば、

print("Mary had a little lamb".count("a"))

出力:

4

大文字と小文字は異なる文字として扱われることを忘れないでください。Aa は異なる文字として扱われ、カウントも異なります。

Python で collections.Counter を使用して文字列内の文字の出現をカウントする

Counter は、collections モジュールに存在する辞書サブクラスです。要素はディクショナリキーとして保存され、それらのオカレンスはディクショナリ値として保存されます。エラーを発生させる代わりに、欠落しているアイテムに対してゼロカウントを返します。

例えば、

from collections import Counter

my_str = "Mary had a little lamb"
counter = Counter(my_str)
print(counter["a"])

出力:

4

カウンターがすべてのカウントを一度に計算するので、多くの文字をカウントする場合に適しています。count() 関数よりもはるかに高速です。

Python で正規表現を使用して文字列内の文字の出現をカウントする

正規表現は、パターンに一致することによって文字列または文字列のセットを見つけるのに役立つパターンで保持される特殊な構文です。正規表現で動作するように re モジュールをインポートします。

問題には findall() 関数を使用できます。

例えば、

import re

my_string = "Mary had a little lamb"
print(len(re.findall("a", my_string)))

出力:

4

Python で defaultdict を使用して文字列内の文字の出現をカウントする

Defaultdictcollections モジュールに存在し、辞書クラスから派生しています。その機能は、存在しないキーのデフォルト値を提供するため、KeyError を発生させないことを除いて、辞書の機能と比較的同じです。

これを使用して、以下に示すように、文字列内の文字の出現を取得できます。

from collections import defaultdict

text = "Mary had a little lamb"
chars = defaultdict(int)

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

print(chars["a"])
print(chars["t"])
print(chars["w"])  # element not present in the string, hence print 0

出力:

4
2
0

Python で pandas.value_counts() を使用して文字列内の文字の出現をカウントする

pandas.value_counts() メソッドを使用して、指定された文字列に存在するすべての文字の出現を取得できます。文字列を Series オブジェクトとして渡す必要があります。

例えば、

import pandas as pd

phrase = "Mary had a little lamb"
print(pd.Series(list(phrase)).value_counts())

出力:

     4
a    4
l    3
t    2
e    1
b    1
h    1
r    1
y    1
M    1
m    1
i    1
d    1
dtype: int64

Series オブジェクト内のすべての文字の出現を返します。

Python で lambda 式を使用して文字列内の文字の出現をカウントする

lambda 関数は、指定された文字列からの出現をカウントできるだけでなく、サブ文字列のリストとして、文字列がある場合にも機能します。

次のコードを参照してください。

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

出力:

4

Python で for ループを使用して文字列内の文字の出現をカウントする

文字列を反復処理し、要素が目的の文字と等しい場合、文字列の最後に到達するまでカウント変数がインクリメントされます。

例えば、

sentence = "Mary had a little lamb"
count = 0
for i in sentence:
    if i == "a":
        count = count + 1
print(count)

出力:

4

sum() 関数でこのメソッドを使用する別の方法を以下に示します。

my_string = "Mary had a little lamb"
print(sum(char == "a" for char in my_string))

出力:

4

関連記事 - Python String