【Python】文字列中の特定文字列の出現回数を取得する方法

どーも!

たかぽんです!

今回はPythonで文字列中の特定文字の出現回数を取得する方法について調べたので、忘備録を残しておこうと思います!

文字列中の特定文字の出現回数を取得する方法

では、さっそくですが本題に!

先日LeetCodeの問題を解く際に必要になったのですが、例えばローマ数字があり、その一部の数字が何度繰り返し出現しているかを調べる必要がありました。

数字といっても、文字列で"XXVI"といったローマ数字が渡されるので、そのなかから"VI"を探す...といった具合です。

今回欲しかったのはその回数だけだったので、それについて調べてみました!

方法は至って簡単でした...!

targetという変数に文字列を入れ、その文字列に対してcountメソッドを使ってあげればOKです。

target = '探したい文字列'
target.count('探したい文字列')


# Example
target = 'XXXIV'

target.count('X')  # 3
target.count('IV') # 1

これだけです...!!!

とっても簡単ですね...!

以下が公式ドキュメントの資料になります。

上記資料をみると、開始地点、終了地点等も選択できそうですね!

またこれからお世話にはなりそうなので、覚えておこう...!

また、今回はこれで済んだのでよかったのですが、どうやらcountメソッドではまさに完全一致した数字のカウントしかできません。

つまり、アルファベットの大文字小文字の区別などはできないようです。

念の為、大文字小文字関係なく出てくる回数も考えておきます。

大文字小文字関係なく出現回数を出す方法

おそらくですが...

そういったメソッドはなさそう?な気がします。

まだpythonのドキュメントの探し方が曖昧で探しきれていないだけかもですが...

ので、いったん別の方法を考えてみます!

僕が思い付いた方法だと、一度大文字か小文字に全てかえてしまい、その後にcountを適用させる方法です。

コードは以下です。

target='xxxiv'
target.upper().count('X')   # 3
target.upper().count('IV')  # 1

先程の例とほとんど変わりませんが、間に"upper()"というメソッドを挟んでいます。

これによって、targetに入っている文字列が全て大文字に変換されます。

こうすると、あとは脳死で大文字に対する操作だけしてあげれば大丈夫ですね!

ちなみに、小文字にする場合は"lower()"を使用すれば大丈夫です。

日本語でもできるかどうか調べておく...!

さて、英語はできるのはわかった!

肝心なのは日本語です!

簡単な例ですが、試してみました!

# もちろん、日本語も対応!
target='これは日本語です!よ!カタカナもかたかなも区別されます!'
print(target.count('日本語'))   # 1
print(target.count('!'))  # 3
print(target.count('!'))  # 0 半角の違いもある
print(target.count('かたかな'))  # 1

気になったのが、半角の違いも検知されるので、その違いを扱う場合は少し厄介かも?と感じています。

半角、全角の入れ替えを行うこともできそうだったのですが、標準で簡単にできなさそう?ライブラリの紹介はたくさんありましたが...ので、いったんそこは割愛します。

あとはひらがな、カタカナの違いももちろん、検知されるので、日本語で使用する場合は注意ですね...!

コード

参考のため、手元で動かしていたコードを以下に貼っておきます。

内容は今までの内容をまとめた感じになっているので、是非ご自身でも動かしてお試しください...!

# coding: utf-8
# Your code here!

target = 'XXXIV'
print(target.count('X'))       # 3
print(target.count('IV'))      # 1

# 小文字を探そうとしても探せない(大文字と小文字の区別はつけられて判定される)
print(target.count('x'))       # 0
print(target.count('iv'))      # 0

# 大文字小文字関係なく出現回数を測る場合... 
# 一度全てを大文字に変換して行う場合
target='xxxiv'
print(target.upper().count('X'))   # 3
print(target.upper().count('IV'))  # 1

# もちろん、日本語も対応!
target='これは日本語です!よ!カタカナもかたかなも区別されます!'
print(target.count('日本語'))   # 1
print(target.count('!'))  # 3
print(target.count('!'))  # 0 半角の違いもある
print(target.count('かたかな'))  # 1

まとめ

さて、今回はPythonで文字列の出現回数を調べる方法について解説しました!

とても簡単にできましたね...!

割と小さなことでもできるできないを理解しておくだけでいいので、しっかり記事にしていければなと思います!

それでわ!

おすすめの記事