2020年3月22日日曜日

【文字列】文字列の検索

 ある文字列に任意の文字列が含まれるかどうかを調べるin/not in演算子、ある文字列のどこに任意の文字(列)が含まれているかを調べるfindrfind、ある文字列に任意の文字(列)がいくつ含まれているかを調べるcountについて解説する。



1. in/not in演算子で任意の文字列が含まれるか調べる

 in/not in演算子によりある文字列に任意の文字列が含まれるかどうかを調べることができる。
in演算子は目的の値が含まれていればTrue、含まれていなければfalseを返す

変数bashoには文字列'夏草や兵どもが夢の跡'が代入されており、変数kigoに'夏草'を代入した場合kigoが文字列bashoに含まれるのでTrueとなる。一方変数kigoに'蛙'を代入した場合文字列bashoには含まれていないのでFalseが返される。

basho = '夏草や兵どもが夢の跡'
kigo = '夏草'
print(kigo in basho)

実行結果


True


basho = '夏草や兵どもが夢の跡'
kigo = '蛙'
print(kigo in basho)

実行結果

False


 not ininとは逆で目的の値が含まれればFalse、含まれていなければTrueを返す。

basho = '夏草や兵どもが夢の跡'
kigo = '夏草'
print(kigo not in basho)

実行結果

False


basho = '夏草や兵どもが夢の跡'
kigo = '蛙'
print(kigo not in basho)

実行結果

True


2. findによる任意の文字列の位置取得

 ある文字列のどこに任意の文字列が現れるかを調べる場合findを用いる。
次の例では'隣の客はよく柿食う客だ'の中に'客'がどこで現れるかを調べておりインデックス2(0,1,2で3文字目)が返ってくる。

hayakuchi = '隣の客はよく柿食う客だ'
word = '客'
print(hayakuchi.find(word))

実行結果

2


 findは文字列の左から見て最初に現れた位置(インデックス)を返す。文字列'隣の客はよく柿食う客だ'には右から2つ目(インデックス9)にも探している'客'が現れるが、既に1つ目の'客'のインデックスである2を返しており9は返さない。探している文字が含まれていない場合には-1が返される。

hayakuchi = '隣の客はよく柿食う客だ'
word = '竹'
print(hayakuchi.find(word))

実行結果

-1


3. rfindによる任意の文字列の位置取得(後ろから)

 rfindでは文字列を右(後ろ)からみて最初に現れる位置を返す。
次の例では右から2文字目(左から10文字目、インデックス9)の'客'の位置を返す。左から3番目(インデックス2)の'客'の位置は返さない。

hayakuchi = '隣の客はよく柿食う客だ'
word = '客'
print(hayakuchi.rfind(word))

実行結果

9


4. countで任意の文字列の個数を調べる

 countを使うと任意の文字列がいくつ含まれるかを調べることができる。文字列'隣の客はよく柿食う客だ'には'客'が2つ含まれるので2が返される。

hayakuchi = '隣の客はよく柿食う客だ'
word = '客'
print(hayakuchi.count(word))

実行結果

2


5. リファレンス

Python 標準ライブラリ > str.count(sub[, start[, end]])
Python 標準ライブラリ > str.find(sub[, start[, end]])

使用バージョン:Python 3.7.0

0 件のコメント:

コメントを投稿