数字文字列のバリデーションチェックの実装方法

記事タイトルとURLをコピーする

こんにちは、技術1課の加藤です。
今回は AWS 一切関係ない、 Python のお話。

先日、0埋めしたい数字文字列に変な値が入っていないか確認する、というバリデーションをプログラムに追加するタスクがありました。

数字文字列のチェックってそういえばどうしたらいいんだろう? と悩んだのでまとめてみました。

結論: メソッドがある

はい、これです。シラナカッタ。

Python には str 型に数値判定のメソッドが用意されています。
以下3つのメソッドが存在し、それぞれにちょこっとずつ判定できる内容が変わりますので場面によって使い分けてあげる必要があります。

  • str.isdecimal()
  • str.isdigit()
  • str.isnumeric()

3つのメソッドの違い

比較表はこんな感じ。

  str.isdecimal() str.isdigit() str.isnumeric()
半角・全角数字 True True True
特殊数字 (①など) False True True
漢数字 False False True

おわりに

数字にキャストして判定する、とかしないといけないのかなあと思っていたのでこのメソッドは便利ですね。

ちなみにこれらのメソッドはUnicode文字を対象にしているらしく、 Unicode がデフォルトの Python3 系では正常に動きますが Python2 系だと明示的に u をつけて Unicode 文字列であると指定をしてあげないとうまく動きません。

すでに Python 2系はサポート切れていますし、使う機会もないかとは思いますがこちらも覚えておくと良いことがあるかもしれません。