ここでは、Pythonの数値の型を判定する方法と、文字列内の数値の判定につかう 3 つの方法を紹介しています。
コードを書く上で、数値の判定が必要になった際は、ぜひご活用ください。
1. 数値の型を判定する | type()
「初心者のためのPythonの数値計算の基礎知識」の中で、Pythonの数値には、
- 整数(int型)
- 浮動小数点(float型)
- 複素数(complex型)
の 3 つがあることを説明しました。
type() 関数を使うと、これらの数値の型を判定することができます。括弧 () の中に、判定したいものの値を入れます。なお、括弧の中に入れる値のことを「引数(ひきすう)」といいます。
以下をご覧ください。
type(1) #整数は int 型です。
type(1.5) #浮動小数点は float 型です。
type(3j) #複素数は complex 型です。
type("1") #クオートで囲うと文字列の str 型です。
x = 1
type(x) #引数は変数でも構いません。
それぞれ、型が判定されていますね。
4行目の「type(“1”)」ですが、数字ですが、クオートで囲んでいるので、文字列(str型)として扱われます。文字列に関しては「初心者のためのPythonの文字列操作の基本」で解説しています。
また、type()関数については、「Pythonの型とは | 確認と変換の方法」でも解説しているので、目を通してみて下さい。
2. 文字列が数値かどうかを判定する方法
文字列内の数値を判定するメソッドは 3 つあります。
- .isdigit()
- .isdecimal()
- .isnumeric()
これらはすべて文字列型オブジェクトに対して使えるメソッドです。オブジェクトやメソッドについては、「Pythonのオブジェクトとは」でご確認下さい。
これらのメソッドは、それぞれ指定した文字列に対して、条件を満たしていれば True、満たしていなければ False を返します。下表が、それを一覧にしたものです。
○をつけているものであれば True を返し、-がついているものであれば False を返します。
isdigit() | isdecimal() | isnumeric() | |
整数 | ○ | ○ | ○ |
浮動小数点 | – | – | – |
全角整数 | ○ | ○ | ○ |
漢数字 | – | – | ○ |
ローマ数字 | – | – | ○ |
バイト数字 | ○ | エラー | エラー |
isdigit() と isdecimal はバイト文字の数字以外は違いがありませんが、isnumeric()は漢数字とローマ数字も、数字として判定するところが大きく異なります。基本的には、isdigit()を使えば問題はないでしょう。
それでは、実際に例を見ていきましょう。
なお、メソッドを使うときはいずれも、次のように書きます。
文字列.メソッド()
それぞれ見ていきましょう。
2.1. isdigit()メソッドによる数値判定
以下の通りです。
"1".isdigit() #半角整数はTrue。
"0.1".isdigit() #浮動小数点はFalse。
"1".isdigit() #全角整数はTrue。
"一".isdigit() #漢数字は False。
"ⅳ".isdigit() #ローマ数字はFalse。
b"1".isdigit() #バイト文字の数字はTrue。
なおメソッドすべてに言えますが、文字列は変数でも構いません。
str = "10"
str.isdigit()
しかし、これらのメソッドはあくまでも文字列オブジェクトなので、文字列でないものには使えません。例えば、以下の例では、数値に対してメソッドを使おうとしていますが、エラーになっていますね。
num = 5
num.isdigit()
これらについては、isdecimal()メソッドも、isnumeric()メソッドも共通です。
なお、厳密には、isdigit()だけは、文字列メソッドであるとともバイト列メソッドでもあります。
2.2. isdecimal()メソッドによる数値判定
以下が、isdecimal()メソッドの数値判定の例です。
"1".isdecimal() #半角整数はTrue。
"0.1".isdecimal() #浮動小数点はFalse。
"1".isdecimal() #全角整数はTrue。
"一".isdecimal() #漢数字は False。
"ⅳ".isdecimal() #ローマ数字はFalse。
b"1".isdecimal() #バイト文字の数字はエラー
isdigit()と大きく変わりはありませんが、バイト文字の数字はエラーとなります。以前は、isdigit()は、ローマ数字には True を返していたのですが、その違いがなくなったため、現場ではどちらを使っても問題ないでしょう。
2.3. isnumeric()メソッドによる数値判定
前者の2つと違い、isnumeric()は、漢数字もローマ数字も True を返します。
"1".isnumeric() #半角整数はTrue。
"0.1".isnumeric() #浮動小数点はFalse。
"1".isnumeric() #全角整数はTrue。
"一".isnumeric() #漢数字は True。
"ⅳ".isnumeric() #ローマ数字はTrue。
b"1".isnumeric() #バイト文字の数字はエラー。
3. まとめ
以上が、Pythonの数値の判定に使う関数やメソッドです。ぜひ覚えておきましょう!
コメント