reモジュールの基本

やや複雑な文字列の抽出の際に便利なのがreモジュール。
返り値がオブジェクトになる点で最初戸惑ったのでまとめておく。

reモジュールとは

Pythonの標準モジュール。インストール不要で利用可能。
文字列を正規表現で抽出したりできる。

文字列の先頭や末尾、部分や全文など対象を選ぶメソッドが多くある。

search関数

text = "a cat loves fish."
re.search("cat", text)

#  <re.Match object; span=(2, 5), match='cat'>

注意するのは、戻り値が抽出した部分ではなく「マッチオブジェクト」というオブジェクトになって返ってくる所。

text = "a cat loves fish. my cat loves meat."
string = re.search("cat", text)

print(string)
print(string.groups())

# <re.Match object; span=(2, 5), match='cat'>
# cat

生成したマッチオブジェクトを変数などに代入し、メソッドを使うことでメソッドに合わせたデータを取り出すことができる。

例えばgroupメソッドには引数が備えてあり、数値を入れることでグループの中から指定したデータを抽出できる。
省略した場合は0の指定とみなし、すべてのマッチした要素を出力する。

if文でのsearch関数

import pandas as pd
df = pd.DataFrame(
    data={'col1': ['aaa', 'aaabbb', 'bbbccc', 'ddd']})
 
strings = df['col1']
strings

# 0       aaa
# 1    aaabbb
# 2    bbbccc
# 3       ddd
# Name: col1, dtype: object

列データをリストに格納し、マッチした場合はその文字列を入れ、しない場合は「マッチしない」を返すものを作る。

for string in strings:
    target = re.search('bbb', string)
    
    if target:
        print(target.group())
    else:
        print('No match')

# No match
# bbb
# bbb
# No match

マッチしない場合はNoneが返ってくる。

このサイトの主
投稿を作成しました 112

関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る