Python

[Python] 文字列の検索方法。find、re.findall、re.search、inの使い方を紹介

Pythonの文字列検索方法について解説したいと思います。

一般的なfindメソッドから正規表現で文字列するre.searchメソッドのやり方を解説します。

find/rfindメソッドで文字列検索

Pythonでは文字列を検索するのに一般的な方法は、find/rfindメソッドが提供されています。

使用方法は 文字列.find(検索文字,開始位置,終了行) になります。

戻り値は検索対象文字列の開始位置となります。

サンプルは以下のようになります。
str1='I like apple'
print(str1.replace('apple','banana'))
出力結果は以下になります。

4

 

使用方法は 文字列.rfind(検索文字,開始位置,終了行) になります。

以下がサンプルになります。
str1='sky air airplane'
print(str1.rfind('air'))
出力結果は以下になります。

8

参考組み込み型find

参考組み込み型rfind

正規表現re.searchを使って検索

正規表現操作用のreライブラリを利用した文字列検索も可能です。

re.search(検索対象,文字列) で利用できます。

戻り値は、検索結果オブジェクトを返します。

以下がサンプルになります。
import re

str1='I like apple'
print(re.search('apple',str1))
print(re.search('banana',str1))

実行結果は以下になります。

<_sre.SRE_Match object; span=(7, 12), match='apple'>

None

 

ですが、上記の例だと少々使いづらい場合もあります。

その他として以下の使い方も可能です。

import re

str1='I like apple'
print(re.search('apple',str1).group())
print(re.search('apple',str1).start())
print(re.search('apple',str1).span())
print(re.search('apple',str1).end())

実行結果は以下になります。

apple
7
(7, 12)
12

参考正規表現操作re.search

re.findall/re.finditer()を使って検索しリスト型を取得

正規表現操作用のreライブラリを利用した文字列検索でfindallやfinditerメソッドも一般的です。

findallの使い方はre.findall(検索対象,文字列) になります。

戻り値は、リスト型データを返します。

以下がサンプルになります。
import re

str1='I like apple,banana,pineapple'
print(re.findall('apple',str1))
以下が実行結果になります。

['apple', 'apple']

 

findallの使い方はre.finditer(検索対象,文字列) になります。

戻り値は、検索対象文字の開始位置と終了位置を返します。

以下がサンプルになります。
import re

str1='I like apple,banana and orange'

#全てのスタートインデックスの獲得
print([cnt.start() for cnt in re.finditer('apple|orange',str1)])

#全てのスタートインデックスと終了インデックスを獲得
print([tmp.span() for tmp in re.finditer('apple|orange',str1)])

#全ての終了インデックスを獲得
print([lmp.end() for lmp in re.finditer('apple|orange',str1)])
以下が実行結果になります。

[7, 24]
[(7, 12), (24, 30)]
[12, 30]

参考正規表現操作re.findall

参考正規表現操作re.finditer

in(所属検査演算)を使って文字列の存在確認

Pythonでは文字列を検索する時の存在確認にin (所属検査演算子)も利用できます。

戻り値は検索対象文字列の存在すればTrue、しなければFalseになります。

サンプルは以下のようになります。
str1='I like apple'

str2='apple'
str3='Apple'

print(str2 in str1)
print(str3 in str1)
以下が実行結果になります。

True
False

参考所属検査演算

関連記事

-Python

Copyright© スタートアップIT企業社長のブログ , 2020 All Rights Reserved.