カテゴリ: Python 更新日: 2025/07/01

Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い

Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い

先生と生徒の会話形式で理解しよう

生徒

「Pythonで、文字列が数字かどうかを調べたいんですけど、どうすればいいですか?」

先生

「それならisdigit()isnumeric()というメソッドを使うのが便利ですよ。」

生徒

「似ている名前ですね。何が違うんですか?」

先生

「どちらも“文字列が数値かどうか”を調べますが、少しだけ違いがあります。わかりやすく順番に説明していきましょう。」

-

1. Pythonで文字列が数字かどうかを判定する方法とは?

1. Pythonで文字列が数字かどうかを判定する方法とは?
1. Pythonで文字列が数字かどうかを判定する方法とは?

Pythonで文字列が数値かどうかを調べたいときは、isdigit()isnumeric()という文字列メソッドを使います。

文字列メソッドとは、文字列(str型)に使える特別な関数のことです。

次のように使います。


text = "123"
print(text.isdigit())  # True
print(text.isnumeric())  # True

True
True

2. isdigit()メソッドの特徴

2. isdigit()メソッドの特徴
2. isdigit()メソッドの特徴

isdigit()は、「0〜9の数字だけで構成されているか」を判定するメソッドです。

つまり、文字列の中に「0〜9」以外の文字があるとFalseになります。


print("123".isdigit())    # True
print("123".isdigit())  # True(全角数字もOK)
print("123a".isdigit())   # False

True
True
False

半角の数字だけでなく、全角の数字(123など)もOKです。

3. isnumeric()メソッドの特徴

3. isnumeric()メソッドの特徴
3. isnumeric()メソッドの特徴

isnumeric()は、数字として使われるあらゆる文字を対象にしています。

たとえば、漢数字(「一」「二」「三」)やローマ数字もTrueになります。


print("三".isnumeric())     # True(漢数字)
print("Ⅲ".isnumeric())     # True(ローマ数字)
print("123".isnumeric())   # True
print("123.45".isnumeric()) # False(小数点がNG)

True
True
True
False

ただし、小数点(.)やマイナス記号(-)が入っていると、数値であってもFalseになります。

4. isdigit()とisnumeric()の違いまとめ

4. isdigit()とisnumeric()の違いまとめ
4. isdigit()とisnumeric()の違いまとめ

どちらも数字だけで構成されているかを調べるメソッドですが、対応している文字に違いがあります。

文字列isdigit()isnumeric()
"123"
"123"(全角)
"三"(漢数字)×
"Ⅲ"(ローマ数字)×
"123.45"××
"-100"××

漢数字やローマ数字を含む文字列を「数字」として扱いたい場合はisnumeric()を使いましょう。

-

5. 数字として使いたい場合の実用例

5. 数字として使いたい場合の実用例
5. 数字として使いたい場合の実用例

例えば、ユーザーから年齢を入力してもらうとき、数字でなければ「数字を入力してください」とエラー表示したいですよね。

そのときは次のように書きます。


age = input("年齢を入力してください:")
if age.isdigit():
    print(f"{age}歳ですね!")
else:
    print("数字だけを入力してください。")

年齢を入力してください:25
25歳ですね!

6. 小数やマイナスの数を判定したい場合の注意点

6. 小数やマイナスの数を判定したい場合の注意点
6. 小数やマイナスの数を判定したい場合の注意点

isdigit()isnumeric()も、小数(例:3.14)やマイナス(例:-5)Falseになります。

そのため、小数や負の数も数値として扱いたい場合は、例外処理を使って数値に変換できるかを調べる方法がおすすめです。


def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

print(is_number("3.14"))   # True
print(is_number("-10"))    # True
print(is_number("abc"))    # False

True
True
False

このようにすれば、小数やマイナスも含めた「数値かどうか」の判定ができます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
Pythonで複数の条件を組み合わせる方法!and・or・notの使い方
Pythonの例外処理(try-except)の基本と応用!エラーハンドリング完全ガイド
Pythonの三項演算子とは?一行で条件分岐を記述する方法
Pythonのmatch文(パターンマッチング)の使い方!switch文の代替
人気記事
No.1
Java&Spring記事人気No1
PHP のセッションの有効期限を設定する方法(session_set_cookie_params)
No.2
Java&Spring記事人気No2
PHP の関数のスコープを完全解説!ローカル変数とグローバル変数の違いとは?
No.3
Java&Spring記事人気No3
PHP の XSS(クロスサイトスクリプティング)対策を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
-