Python で文字列内の文字の出現をカウントする
-
Python で
count()
関数を使用して文字列に含まれる文字の数をカウントする -
Python で
collections.Counter
を使用して文字列内の文字の出現をカウントする - Python で正規表現を使用して文字列内の文字の出現をカウントする
-
Python で
defaultdict
を使用して文字列内の文字の出現をカウントする -
Python で
pandas.value_counts()
を使用して文字列内の文字の出現をカウントする -
Python で
lambda
式を使用して文字列内の文字の出現をカウントする -
Python で
for
ループを使用して文字列内の文字の出現をカウントする
プログラミングでは、文字列は文字のシーケンスです。
このチュートリアルでは、Python で文字列内の文字の出現回数をカウントする方法を紹介します。
Python で count()
関数を使用して文字列に含まれる文字の数をカウントする
count()
関数を使用して、文字列内の値の出現をカウントできます。指定された文字列に値が表示される回数を返します。
例えば、
print("Mary had a little lamb".count("a"))
出力:
4
大文字と小文字は異なる文字として扱われることを忘れないでください。A
と a
は異なる文字として扱われ、カウントも異なります。
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
を使用して文字列内の文字の出現をカウントする
Defaultdict
は collections
モジュールに存在し、辞書クラスから派生しています。その機能は、存在しないキーのデフォルト値を提供するため、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