Pythonで文字列から数字だけを取り出し数字を降順にソートして返す関数を定義する

スポンサーリンク

Pythonで文字列から数字だけを取り出し数字を降順にソートして返す関数を定義し、実装してみます。

■今回の環境(Python)

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

■文字列から数字だけを取り出し数字を降順にソートして返す関数の定義

では、文字列から数字だけを取り出し数字を降順にソートして返す関数を定義するために、コードを書いていきます。

■コード

def sort_numbers(string):
    nums = [int(s) for s in string if s.isdigit()]
    return sorted(nums, reverse=True)

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

今回はまずdef文を用いてsort_numbers()という関数を定義します。括弧内には第1の引数,パラメータとしてstringを設定します。設定後、関数が呼び出された時の処理として、角括弧”[ ]*”を用いてnumsというリストを作成します。作成後、stringで受け取った文字列の各文字を1ずつs変数に格納します。その時にif文を用いてs変数に対して(.)ドット演算子を用いて、isdigit()を使います。これで値が数値なのか文字列なのか判定できます。そして条件が真(True)だった場合はint()に対して(.)ドット演算子を用いてint()を使い数字を”数値”に変換し、リストに追加します。数字が含まれていなかった(偽(False)だった)場合は、リストは空のままになります。その後、sorted()を用います。括弧内には、第1引数,パラメータとしてnumsのリストを渡し、第2引数,パラメータとして「reverse=True」を渡します。これでnumsのリストが降順にソートされ、これをreturnとして返すという処理になります。

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

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

■実行・検証

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

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

コメント

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