データサイエンス100本ノックで勉強(14)

データサイエンス100本ノックでSQLPythonを勉強していきます。

github.com

S-016: 店舗テーブル(store)から、電話番号(tel_no)が3桁-3桁-4桁のデータを全項目表示せよ。

SQLだと以下のようになります。

select * from store where tel_no ~ '^[0-9]{3}-[0-9]{3}-[0-9]{4}$'

f:id:JunpeiNakasone:20220204062839p:plain

正規表現で桁数もチェックできるんですね。この使い方だと電話番号を指定する時などに便利ですね。

正規表現についてググってみると以下記事が読みやすかったです。

www-creators.com

[0-9]で0から9までの数字を示し、{}で囲む数字でその桁数を示すようです。

念の為[0-4]にしてSQLを実行してみて、5が除外されるので045から始まる電話番号は取得できなくなることを確認しました。

f:id:JunpeiNakasone:20220204063447p:plain

Pythonでは以下のようになります。

df_store.query("tel_no.str.contains('^[0-9]{3}-[0-9]{3}-[0-9]{4}$',regex=True)",              
              engine='python')

f:id:JunpeiNakasone:20220204063705p:plain