Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの正規表現を使って文字列から最大の数値を抽出する方法

はじめに

Pythonの正規表現(regex)を使って文字列から最大の数値を抽出する最も簡単な方法は、以下の2ステップです。

  • reモジュールを使って、文字列内のすべての数値を抽出する
  • 抽出した数値の中から最大値を見つける

具体例

たとえば、次のような入力文字列があるとします。

「この都市には121005人が住んでおり、隣の都市には1587469人、遠く離れた都市には18775994人が住んでいます。」

この文字列から得られるべき出力は次のとおりです。

18775994

正規表現「\d+」の使い方

文字列内のすべての数値を検索するには、「\d+」という正規表現パターンを使用します。「\d」は1桁の数字(digit)を意味し、直後のプラス記号(+)は「1回以上の連続した繰り返し」を表すため、連続する数字のかたまり(最長の数値)をまとめて取得できます。

Pythonでは標準ライブラリの re パッケージを使って、以下のように実装できます。

import re

# 文字列からすべての数値を抽出する
occ = re.findall("\d+", "この都市には121005人が住んでおり、隣の都市には1587469人、遠く離れた都市には18775994人が住んでいます。")

# 抽出した数値を文字列からint型に変換する
num_list = map(int, occ)

# 最大値を見つけて表示する
print(max(num_list))

実行結果

このコードを実行すると、次の出力が得られます。

18775994

コードのポイント解説

  • re.findall():パターンに一致するすべての部分をリストとして返します。ここでは ["121005", "1587469", "18775994"] のような文字列のリストが取得されます。
  • map(int, occ):抽出された数値は文字列型なので、max() で正しく比較するために int 型へ変換しています。
  • max():変換後の数値リストから最大値を取得します。

なお、map() の代わりにリスト内包表記 [int(x) for x in occ] を使っても同じ結果が得られます。状況に応じて読みやすい書き方を選択するとよいでしょう。

  1. Pythonで文字列から日付を抽出・解析する方法

    文字列から日付を抽出するには、まずその文字列内で日付がどのような形式(フォーマット)で表現されているかを把握しておく必要があります。基本的なアプローチとしては、正規表現(reモジュール)で日付部分を取り出し、datetime.datetime.strptime() で解析(パース)するという流れになります。例えば、文字列中に「YYYY-MM-DD」形式の日付が含まれている場合、以下のコードで抽出と解析ができます。コード例import re import datetime s = I have a meeting on 2018-12-10 in New York match = re.sea

  2. Pythonで文字列から部分文字列を抽出する方法|正規表現のグループキャプチャ活用

    正規表現のグループキャプチャを使った部分文字列の抽出 Pythonで文字列の中から特定の部分文字列を取り出したい場合、reモジュールの正規表現における「グループキャプチャ」を利用するのが効果的です。この手法を使うには、抽出したい部分文字列のフォーマットや、その前後の文脈をある程度把握しておく必要があります。 例えば、文章の中から「$xxx,xxx.xx」という形式で書かれた金額情報を抽出したいとします。その場合は、re.search()と括弧で囲んだキャプチャグループを次のように組み合わせます。 import re text = The phone is priced at $15,745.