LoginSignup
4
10

More than 3 years have passed since last update.

【Python】リストや文字列から数字のみ抽出する | 正規表現, Regex使用

Last updated at Posted at 2020-07-30

Pythonで、スクレイピングなどで抽出したデータ(リストや文字列)から数字のみ抽出(正規表現)する方法をメモしておきます。正規表現のモジュールにはregexを使用しますので、regexをインストールしていない方はインストールしてください。

目的

スクレイピングで抽出したデータから、数字のみを抽出する

実装

正規表現を使って、数字のみ抽出

reモジュールを使用します。ターミナルから以下のコマンドを実行して、regexをインストールしましょう。

$ pip install regex
# または
$ pip3 install regex

その次に、sample.pyにreモジュールをインポート

sample.py
import re

これでreモジュールを使う準備ができました。

文字列から数字のみ抽出

sample.py
import re

dt = "regnkrnfskrngkaer  gksgnkq laergnnktga3r erfkl 登録者数 400人aelrkna erglknnarg"
num = re.sub("\\D", "", dt)
print(num)

# 出力結果
# 400

リストから数字のみ抽出

sample.py
import re

dt = ['regnkrnfskrngkaer', 'gksgnkq', 'laergnnktgar', 'erfkl', '登録者数 400人', 'aelrkna erglknnarg']
dt_str = ",".join(dt)
dt_num = re.sub("\\D", "", dt_str)
print(dt_num)

# 出力結果
# 400

文字列と数字が混じったリストから特定の数字のみ抽出

失敗例

sample.py
import re

dt = ['regr111kaer', 'gg443nkq', 'laen56nktgar', 'er39fkl', '登録者数 400人', 'ael09narg']
dt_str = ",".join(dt)
dt_num = re.sub("\\D", "", dt_str)
print(dt_num)

# 出力結果
# 111443563940009

成功例

sample.py
import re

dt = ['regr111kaer', 'gg443nkq', 'laen56nktgar', 'er39fkl', '登録者数 400人', 'ael09narg']
dt_pop = (dt.pop(4))
dt_num = re.sub("\\D", "", dt_pop)
print(dt_num)

# 出力結果
# 400

参考
https://qiita.com/ikanamazu/items/ba2a32a1a5924f3bd8e9
https://niwakomablog.com/python-number-extract/#:~:text=%E3%80%8Cr%E2%80%9D%5CD%E2%80%9D%E3%80%8D,%E5%8F%96%E3%82%8A%E5%87%BA%E3%81%99%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82
https://qiita.com/sakamossan/items/161db7418ade037f6f3d

4
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10