Pythonで正規表現を使用し文字列内の数字を抽出する関数を定義する

スポンサーリンク

Pythonで正規表現を使用し文字列内の数字を抽出する関数を定義し実装してみます。

なお、今回はPythonの標準ライブラリであるreモジュールを用います。

■今回の環境(Python)

Google Colaboratory(Google Colab)。Google Colaboratoryでは、今回Python 3.9.16が用いられる。

■正規表現を使用し文字列内の数字を抽出する関数の定義

では、正規表現を使用し文字列内の数字を抽出する関数を定義するために、コードを書いていきます。

■コード

import re

def sort_numbers(string):
    nums = [int(s) for s in re.findall(r'\d+', string)]
    return sorted(nums, reverse=True)

string = "a2bc13def456ghi789"
result = sort_numbers(string)
print(result)

今回はまずimportでreモジュールを呼び出します。その後、def文を用いてsort_numbers()という関数を定義します。括弧内には第1の引数,パラメータとしてstringを設定します。設定後、関数が呼び出された時の処理として、角括弧”[ ]*”を用いてnumsというリストを作成します。作成後、stringで受け取った文字列をreモジュールのfindall()の第2の引数,パラメータとして渡します。findall()は、文字列内で一致するすべての正規表現パターンを検索して、マッチするすべての部分文字列をリストとして返しますので、第1の引数,パラメータとして正規表現である「r’\d+’」を渡します。これは文字列内の連続した数字と表す。これにより、すべての正規表現パターンを検索し、マッチするすべての部分文字列をs変数に1つずつ順番に格納していきます。そして、s変数に格納された部分文字列は、int()に対して(.)ドット演算子を用いてint()を使い数字を”数値”に変換し、リストに追加します。その後、sorted()を用います。括弧内には、第1引数,パラメータとしてnumsのリストを渡し、第2引数,パラメータとして「reverse=True」を渡します。これでnumsのリストが降順にソートされ、これをreturnとして返すという処理になります。

関数を定義後、stringという変数を定義し、その中に数字を含む文字列を格納します。格納後、resultという変数を定義し、その中でsort_numbers()を呼び出します。その時に括弧内に引数,パラメータとしてstringを渡します。これで関数が呼び出され処理が実行し結果がresult変数に格納されます。

最後にresult変数内の情報をprint()を用いて出力します。

■実行・検証

このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。

実行してみると、関数を呼び出し、文字列内の数字を抽出し、この数字を降順にソートし、ソートされたリストをprint()で出力させることができました。

コメント

タイトルとURLをコピーしました