Python isdigit()メソッド完全ガイド – 使い方からエラー対処まで徹底解説

 

isdigit()メソッドとは

Pythonのisdigit()メソッドは、文字列がすべて数字(0-9)で構成されているかどうかを判定するメソッドです。戻り値はTrueまたはFalseのブール値で、入力値検証や数値データの前処理で頻繁に使用されます。

基本的な使い方

構文

文字列.isdigit()

基本例

print("123".isdigit())      # True
print("abc".isdigit())      # False
print("12a".isdigit())      # False
print("".isdigit())         # False

isdigit()の詳細な動作

対象となる文字

isdigit()は以下の文字を「数字」として認識します:

  • ASCII数字:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • Unicode数字:²、³、½などの上付き数字や分数
print("123".isdigit())      # True(ASCII数字)
print("²³".isdigit())       # True(上付き数字)
print("½".isdigit())        # True(分数文字)

False となるケース

print("-123".isdigit())     # False(マイナス記号)
print("12.3".isdigit())     # False(小数点)
print("1,000".isdigit())    # False(カンマ)
print(" 123".isdigit())     # False(空白)

実践的な活用例

1. ユーザー入力の検証

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

2. 数値文字列の抽出

data = ["123", "abc", "456", "7xy"]
numbers = [x for x in data if x.isdigit()]
print(numbers)  # ['123', '456']

3. CSVデータの数値列判定

def is_numeric_column(values):
    return all(v.isdigit() for v in values if v)

csv_data = ["100", "200", "300"]
print(is_numeric_column(csv_data))  # True

他の判定メソッドとの比較

メソッド対象
isdigit()数字文字“123” → True
isnumeric()数値文字(分数含む)“½” → True
isdecimal()10進数字のみ“123” → True, “²” → False
text = "²³"
print(f"isdigit(): {text.isdigit()}")     # True
print(f"isnumeric(): {text.isnumeric()}") # True  
print(f"isdecimal(): {text.isdecimal()}") # False

よくあるエラーと対処法

1. 空文字列の扱い

# 問題のあるコード
def validate_input(s):
    return s.isdigit()

# 改善版
def validate_input(s):
    return s and s.isdigit()

2. None値への対応

# エラー回避
def safe_isdigit(value):
    return str(value).isdigit() if value is not None else False

print(safe_isdigit(None))   # False
print(safe_isdigit(123))    # True

3. 負数の判定

def is_integer(s):
    if s.startswith('-'):
        return s[1:].isdigit()
    return s.isdigit()

print(is_integer("-123"))   # True
print(is_integer("123"))    # True

パフォーマンスと最適化

大量データの処理

# リスト内包表記で高速処理
data = ["123", "abc", "456", "def"]
digits = [x for x in data if x.isdigit()]

正規表現との比較

import re

# isdigit()の方が高速
def with_isdigit(s):
    return s.isdigit()

def with_regex(s):
    return bool(re.match(r'^\d+$', s))

まとめ

isdigit()メソッドは文字列が数字のみで構成されているかを簡単に判定できる便利なメソッドです。ユーザー入力の検証、データクリーニング、条件分岐など様々な場面で活用できます。

重要なポイント:

  • 空文字列はFalseを返す
  • マイナス記号や小数点を含む場合はFalse
  • Unicode数字文字もTrueを返す
  • None値に対して使用するとエラーになる

適切な使い方を理解して、Pythonプログラムの品質向上に役立ててください。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座