Python プログラミング

Pythonでの文字列の検索。部分一致・全文一致・前方一致・後方一致など

投稿日:2018年8月6日 更新日:

こんにちは!シミダイ(@shimidai2100)です。

Pythonで文字列を検索する方法を紹介します。

文字列を検索するといっても、部分一致・全文一致・前方一致・後方一致などやりたいことは様々あります。

またアプローチの方法も多くありますでの、この記事でPythonでよく使用する文字列検索をマスターするために役立ててください。


find():文字列の開始位置を取得

数値型データや配列型を文字列にするには「find()」メソッドを使用します。

引数に渡された検索する文字列の最初に現れる開始位置が返されます。

仮にマッチされない場合には「-1」が返されます。

以下が使用方法になります。

>>> string = 'Hello World.'
>>> string.find('World')
6
>>> string.find('world')
-1

なお「rfind()」という類似のメソッドもあります。

rfind()」は文字列の末尾から検索します。

>>> string = 'Hello World.'
>>> string.find('o')
4
>>> string.rfind('o')
7

in:文字列の存在有無を確認

文字列の存在有無を確認するだけならば「in」を使用することもできます。

検索文字列がマッチする場合は「True」、検索文字列がマッチしない場合は「Flase」が返ります。

以下が使用方法になります。

>>> string = 'Hello World.'
>>> print('World' in string)
True
>>> print('world' in string)
False

re.search()とre.match():正規表現で検索

正規表現で文字列を検索する場合「search()」、「match()」を使用します。

search()」は全文中から検索することができますが、「match()」は文字列の先頭からのみ検索します。

以下が使用方法になります。

>>> import re
>>> string = '123-4567 Hello World.'
>>> re.search('[0-9]{3}-[0-9]{4}', string)
<_sre.SRE_Match object; span=(0, 8), match='123-4567'>
>>> string = 'Hello World. 123-4567'
>>> re.search('[0-9]{3}-[0-9]{4}', string)
<_sre.SRE_Match object; span=(13, 21), match='123-4567'>
>>>
>>> string = '123-4567 Hello World.'
>>> re.match('[0-9]{3}-[0-9]{4}', string)
<_sre.SRE_Match object; span=(0, 8), match='123-4567'>
>>> # マッチできない
... string = 'Hello World. 123-4567'
>>> re.match('[0-9]{3}-[0-9]{4}', string)
>>>

re.findall():複数検索結果がある場合の検索

複数の検索結果がある場合「findall()」関数を使用します。

検索にマッチした文字列はリスト型で返却されます。

findall()」は「reライブラリであることに注意してください。

以下が使用方法になります。

>>> import re
>>> string = '1234 5678 1234 5678'
>>> re.findall('1234', string)
['1234', '1234']

re.finditer():検索結果をイテレーターで返す

検索結果をイテレーターで返す場合は「finditer()」関数を使用します。

検索にマッチしたすべて文字列はイテレーターで返却されます。

finditer()」は「reライブラリであることに注意してください。

>>> string = 'Hello World. Hello World.'
>>> re.finditer('Hello', string)
<callable_iterator object at 0x000001CC0C80B208>
>>> for value in re.finditer('Hello', string):
... print(value)
...
<_sre.SRE_Match object; span=(0, 5), match='Hello'>
<_sre.SRE_Match object; span=(13, 18), match='Hello'>

startswith():前方一致で検索文字列が含まれているか確認

前方一致で検索文字列が含まれているか確認するのは「starswith()」メソッドを使用します。

検索文字列がマッチする場合True」、検索文字列がマッチしない場合False」です。

以下が使用方法になります。

>>> string = 'Hello World.'
>>> string.startswith('Hello')
True
>>> string.startswith('World.')
False

endswith():後方一致で検索文字列が含まれているか確認

後方一致で検索文字列が含まれているか確認するのは「endswith()」メソッドを使用します。

検索文字列がマッチする場合True」、検索文字列がマッチしない場合False」です。

以下が使用方法になります。

>>> string = 'Hello World.'
>>> string.endswith('World.')
True
>>> string.endswith('Hello')
False

 

スポンサードリンク

関連記事

-Python, プログラミング

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.