らっちゃいブログ

日々の学びと気づきを発信するブログ

python の isdigit() がややこしい件

スポンサーリンク

どうもこんにちは。racchai です。

python を使っていて、渡ってきた文字列が数値かどうか判定したいってことないですか?

私はあります。昨日ありました。

python には str.isdigit というズバリな組み込み関数が用意されているので、それ使っちゃえばいいんですよね。

で、使ったわけですが、どうも期待通りに動かないケースがあるわけです。

よくよく調べてみると、どうも -1 の場合に False が返っているように見える。

そんなばかな!と思い確認してみたら。

>>> '1'.isdigit()
True
>>> '0'.isdigit()
True
>>> '-1'.isdigit()
False

False が返っとるがな!

どうやらマイナス値は False になるみたい。

python 世界で負数は数字ではないと?

なんでこんなことになってるんだ!

無駄に時間かかってしまったじゃないか。。

期待動作となる関数を手作りしてもいいけど、これ使えばいいのにって言われたとき悔しいので

負数も含めて正しく isdigit する方法、だれか教えてください。