用語比較
isdecimal・isdigit・isnumeric の違い|'²' や '½' で結果が分かれる(Python3基礎)
文字列が数字だけでできているかを調べるメソッドには、isdecimal()、isdigit()、isnumeric() の 3 つがあります。'123' のような普通の数字なら、3 つとも True を返します。
違いが出るのは、上付き文字の '²' や分数の '½' のような文字です。isdecimal() は '²' も '½' も False、isdigit() は '²' だけ True、isnumeric() は両方 True を返します。
このページは、数字かどうかの判定で結果が割れて迷った人向けです。決まりは、Python 公式ドキュメントの組み込み型(文字列メソッドの項)に書かれています。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
isdecimal()
十進法の数を作れる文字だけ。'123' は True、'²' と '½' は False。
isdigit()
isdecimal() の文字に加え、上付き数字の '²' なども True。'½' は False。
isnumeric()
isdigit() の文字に加え、'½' のような数の性質を持つ文字も True。
違いを表で確認
| 比較軸 | isdecimal() | isdigit() |
|---|---|---|
| '123' | isdecimal():True | isdigit():True、isnumeric():True |
| '²'(上付きの 2) | isdecimal():False | isdigit():True、isnumeric():True |
| '½'(分数) | isdecimal():False、isdigit():False | isnumeric():True |
| '12.5'・'-1'・空文字列 | 3 つとも False | 小数点・符号・空は数字に含まれない |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
'12.5' や '-1' が False になって迷った人
3 つとも、小数点とマイナス記号を数字として扱いません。'12.5' も '-1' も False です。数として読めるかを調べたいなら、float() や int() が例外を起こすかで判断します。
isdigit() が True なのに int() が失敗した人
'²' は isdigit() で True ですが、int('²') は ValueError になります。Python 3.9.6 では invalid literal for int() with base 10: '²' でした。int() に渡せる文字かを確かめたいなら、isdecimal() のほうが安全です。
全角や他の言語の数字を扱う人
全角の '12' とアラビア・インド数字の '١٢' は 3 つとも True で、int() に渡すとどちらも 12 になります。これらは十進法の数字として扱われます。
具体例で使い分ける
例 1
'²' と '½' の判定
'²' と '½' に対して、isdecimal()、isdigit()、isnumeric() をそれぞれ実行します。
- 公式ドキュメントは、isdigit() の対象を、十進文字に加えて、互換の上付き数字のように特別な扱いが要る数字と説明しています。'²' はここに入ります。
- isnumeric() は、さらに分数のような数の値を持つ文字まで含みます。'½' はここだけに入ります。
結論: '²' は False、True、True の順、'½' は False、False、True の順です。Python 3.9.6 で同じ結果を確認しました。
例 2
判定が True でも int() に渡せるとは限らない
s = '²' のとき、s.isdigit() が True なので int(s) を実行します。
- isdigit() は、十進法の数を作れない文字も数字として数えます。
- int() は、十進法の数として読める文字列だけを受け付けます。
結論: int('²') は ValueError になります。int() に渡す前の判定には isdecimal() を使うほうが、結果が食い違いません。
問題文から答えを選ぶ手順
- 1
何を数字と認めたいかを決める
0 から 9 のような十進法の数字だけなら isdecimal()、上付き数字も認めるなら isdigit()、分数まで認めるなら isnumeric() です。
- 2
int() に渡す前の判定かを確かめる
渡す前の判定なら isdecimal() を選びます。
- 3
符号と小数点を含むかを確かめる
含むなら 3 つとも使えません。float() を try で囲んで判断します。
試験での見分け方
- 1isdecimal() の対象は、十進法の数を作れる文字である。
- 2isdigit() の対象は、isdecimal() の対象に上付き数字などを加えたものである。
- 3isnumeric() の対象は、isdigit() の対象に分数などを加えたものである。
- 43 つとも、小数点・符号・空文字列では False になる。
誤答しやすい選択肢
isdigit() が True なら int() に渡せると思う
修正: '²' は isdigit() で True ですが、int() は ValueError になります。
'12.5' や '-1' で True になると思う
修正: 小数点とマイナス記号は数字ではないので、3 つとも False です。
isnumeric() が最も狭いと思う
修正: 最も狭いのは isdecimal()、最も広いのは isnumeric() です。
確認問題
Q1'½'.isnumeric() の結果は何ですか?
答え: True
isnumeric() は分数のような数の値を持つ文字も True にします。isdigit() と isdecimal() は False です。
Q2'²'.isdecimal() の結果は何ですか?
答え: False
isdecimal() は十進法の数を作れる文字だけが対象で、上付きの '²' は含まれません。isdigit() は True です。
Q3'12.5'.isdigit() の結果は何ですか?
答え: False
小数点は数字ではないので、'12.5' は 3 つのメソッドのどれでも False です。
到達チェック
- 3 つのメソッドが対象にする文字の広さの順を言える
- '²' と '½' の結果を言える
- isdigit() が True でも int() が失敗する例を言える
- '12.5' や '-1' が False になる理由を言える
関連ページで確認する
同じ資格で次に知りたいこと
- set.remove()と discard() の違い|要素が無いときの KeyError(Python3基礎)
s.remove(x) は x が集合に無いと KeyError、s.discard(x) は何も起こしません。どちらも戻り値は None です。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- capitalize()と title() の違い|they're が They'Re になる理由(Python3基礎)
capitalize() は文字列の先頭の1文字だけを大文字にし、残りを小文字にします。title() は単語ごとに先頭を大文字にしますが、アポストロフィの後ろも大文字にします。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- dict.get()と d[key] の違い|キーが無いときの KeyError と None(Python3基礎)
d['b'] はキーが無いと KeyError、d.get('b') は None を返し、d.get('b', 0) なら 0 を返します。値が None のキーとキーが無いことの区別も含め、Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
よくある質問
Qふつうの数字の判定にはどれを使えばよいですか?
十進法の数字だけを認めたいなら isdecimal() です。int() に渡す前の判定にも合います。
Qisdecimal() は半角の数字だけですか?
半角に限りません。Unicode の分類が Nd(十進数字)の文字が対象で、アラビア・インド数字なども True になります。
Q負の数や小数を判定するにはどうしますか?
float() を try で囲み、ValueError が起きるかで判断します。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
