rukurxの日記

自分の日々の作業や調べたことのメモ

Pythonで電話番号をハイフン区切りに変換する

電話番号をハイフン区切りにできる便利なライブラリがないか探していたところ、GoogleGithubで公開しているlibphonenumberを見つけました! libphonenumberは国際電話番号を解析・変換・バリデーションすることができます。

github.com

だがしかし!Java, C++, JavaScript の実装しかない… 諦めかけたその時、サードパーティが多言語に移植してくれている一覧を発見!C#, Go, Objective-c, PHP, PostgreSQL in-database types, Python, Ruby …!!! Pythonもありました! 名前は phonenumbers になってますね。わからいやすいな。 早速こちらのライブラリを試して見ました。

github.com

まずはライブラリのインストール

$ pip install phonenumbers

Pythonコンソール起動して実行

$ python
>>> import phonenumbers
>>> tel = '0300000000'
>>> tel_hyphen = phonenumbers.parse(tel, 'JP')
>>> phonenumbers.format_number(tel_hyphen, phonenumbers.PhoneNumberFormat.NATIONAL)
u'03-0000-0000'

ちゃんとハイフン区切りに変換されました!素晴らしい… 変換する電話番の形式がおかしかったりすると例外投げるので、入力ミスった値が来た時用に例外処理は入れといた方がよさそう。

libphonenumberの解説をしてくれているスライドあったので気になったら見てみよう。

speakerdeck.com