Python正規表現で小数点を除いた数値を取得する方法
はじめに
文字列から数値を抽出する際、小数点(ピリオド)が含まれていると単純なパターンではうまく扱えません。Pythonのreモジュールと正規表現を組み合わせれば、小数点を除外した形で数値をきれいに取り出すことができます。
小数点を除いて数値を取得するサンプルコード
次のコードは、与えられた文字列から小数点を区切りとして、整数部分と小数部分をそれぞれ別の数値として取得する例です。
>>> import re
>>> m = re.match(r"(\d+)\.(\d+)", "80.3196")
>>> m.groups()
('80', '3196')
このように、80.3196 という小数が '80' と '3196' の2つの数値に分けて取得できました。
正規表現パターンの解説
使用しているパターン r"(\d+)\.(\d+)" の各要素は、次のような意味を持っています。
(\d+):1桁以上の連続する数字にマッチし、グループとしてキャプチャします(整数部分)。\.:小数点そのものにマッチします。正規表現では「.」が任意の一文字を表すメタ文字のため、バックスラッシュでエスケープする必要があります。(\d+):小数点以降の数字をキャプチャします(小数部分)。
m.groups() を呼び出すと、キャプチャされた各グループがタプル形式で返されます。マッチしなかった場合は None が返るため、実際のコードでは戻り値のチェックを行うと安全です。
応用:文字列中のすべての数値を抽出する
文章の中に複数の数値が含まれる場合は、re.findall() を使うと便利です。整数と小数のどちらにも対応させるには、次のようにパターンを組み合わせます。
>>> re.findall(r"\d+\.\d+|\d+", "価格は 80.3196 円と 120 円です")
['80.3196', '120']
このパターンでは、先に小数(\d+\.\d+)を評価し、マッチしなければ整数(\d+)として取得する仕組みになっています。
まとめ
正規表現でキャプチャグループ ( ) を活用すれば、小数点を含む数値を整数部と小数部に分離したり、小数点を除いた数値だけを取り出したりすることが簡単にできます。re.match、re.search、re.findall を目的に応じて使い分けることで、テキスト処理の幅が大きく広がります。
-
【初心者向け】Python正規表現のグループ化の仕組みと使い方を徹底解説
グループ化とは正規表現における「グループ化」とは、パターンの一部を丸括弧 () で囲むことです。これにより、単一の文字だけでなく、グループ全体に対して量指定子(*、+ など)や各種演算子を適用できるようになります。キャプチャグループと後方参照丸括弧には、部分式をひとまとめにする役割に加えて、「キャプチャグループ」を作成する働きもあります。グループ化された部分がマッチした文字列は「後方参照(バックリファレンス)」として保存され、あとから再利用することが可能です。実際の開発では、2つ以上の候補のどれかにマッチする正規表現が必要になる場面が多くあります。また、量指定子を複数の式全体に適用したいケース
-
Pythonの正規表現における修飾子(フラグ)の使い方と機能一覧
Python正規表現の修飾子とはPythonのreモジュールでは、正規表現によるパターンマッチングの挙動を制御するために、さまざまな修飾子(フラグ)を指定することができます。これらの修飾子を使うことで、大文字小文字の区別や改行の扱いなど、マッチングの動作を柔軟に変更できます。以下に、主要な修飾子とその機能を一覧形式で紹介します。1. re.I(re.IGNORECASE)大文字と小文字を区別せずにマッチングを行います。英字の大小を無視したい場合に便利です。2. re.L(re.LOCALE)現在のロケール設定に従って単語を解釈します。このフラグは、アルファベット系のグループ(\w および \W