Stringから数字のみを抽出する方法を紹介します。
1. すべての数字を1つの文字列に抽出
re.sub()
の Syntax は次のようになります。
sub()
は string
の pattern
と一致する文字を repl
に置き換えます。
re.sub(pattern, repl, string)
次のように sub()
を使用して、文字列から数字以外の文字をすべて削除し、数字で構成される文字列を作成できます。
import re
string = 'aaa1234, ^&*2233pp'
numbers = re.sub(r'[^0-9]', '', string)
print(numbers)
Output:
12342233
2. 連続した数字を抽出してリストに戻す
re.findall(pattern, string)
は、文字列内の pattern に対応する内容を見つけてリストに返します。
r'\d+'
は、1回以上繰り返される数字のパターンを意味します。
次のように、連続した数字を1つのIntegerに抽出します。
import re
string = 'aaa1234, ^&*2233pp'
numbers = re.findall(r'\d+', string)
print(numbers)
Output:
['1234', '2233']
3. 文字列パターン内の数値抽出
たとえば、"Request 12345 Finished"
などの文字列から中央の数字を抽出したい場合があります。
つまり、 Request (pattern) Finished
と同じ形式で、フォーマットは固定されているが中央の数字だけ異なる状況です。
こういうときは、以下のように正規表現で中数字だけ読むことができます。
import re
str = "Request 12345 Finished."
pattern = "Request ([0-9]+) Finished."
result = re.search(pattern, str)
print(result.group(1))
Output:
12345
ちなみに、 group(1)
は一致するグループの中で一番最初の項目を意味し、 group(0)
は入力された文字列を意味します。
groupについてもっと知るために、以下のように2つのグループを持つパターンを作成して実行結果を見ると、group(1)とgroup(2)が出力するものと、groups()が出力するものが何であるかがわかります。 。
import re
str = "Request 12345 Finished. 67890"
pattern = "Request ([0-9]+) Finished. ([0-9]+)"
result = re.search(pattern, str)
print(result.group(0))
print(result.group(1))
print(result.group(2))
print(result.groups())
Output:
Request 12345 Finished. 67890
12345
67890
('12345', '67890')
4. 数字抽出とバッチで分離してリストに戻す
r'\d
は 1 つの数字を意味します。
1 つ以上の繰り返しを意味する +
が除外されたパターンでパターンを探すと、数字 1 個単位で抽出され、リストに保存されます。
import re
string = 'aaa1234, ^&*2233pp'
numbers = re.findall(r'\d', string)
print(numbers)
Output:
['1', '2', '3', '4', '2', '2', '3', '3']
References
Related Posts
- Python - JSONファイル読み書きする方法
- Python - 平方根の計算方法(Square Root)
- Python - 文字列 特定文字 削除
- Python lower() 文字列を小文字に変換
- Python upper() 文字列を大文字に変換
- Python - ファイル数の確認
- Python - イテレーションステートメントでセット巡回
- Python - 文字列位置(Index)を探す
- Python - ファイルを読み込み、1行ずつリストに保存する
- UbuntuにPython 3.10をインストールする方法
- Python - 関数の定義と呼び出し方法
- Python - ディクショナリーの整理と例
- Python - ディクショナリーの初期化、4つの方法
- Python - XML生成とファイルの保存
- Python - XML解析、タグ、または要素別に読み取る
- Python - 文字列をリストに変換する方法
- Python - 'and'と'&'の違い
- Python - 文字列 切り取り(substring、slicing)
- Python - 'is'と'=='の違い
- PythonでShell Command、スクリプトの実行
- Python - 数字3桁ごとにコンマ(,)を入れる方法
- Python - 辞書をリストに変換
- Python - 文字列から数字のみを抽出する方法
- Python - zipで二つのリスト縛り
- Python - リストを文字列に変換する
- Python - 辞書にキーがあることを確認する
- Python - ファイル、フォルダが存在確認
- Python - floatをintに変更する方法
- Python - リストの最初、最後の 要素を取得する方法
- Python - bytesをStringに変換する方法
- Python - Stringをbytesに変換する方法
- Python - 辞書の重複排除方法
- Python - 二つのリスト一つ併合
- Python - リストの重複排除、4つの方法
- Python - listの先頭にデータを追加する