文字列

【Python】文字列に含まれる文字の種類を判定する ~isxxxxxメソッド~

【Python】文字列に含まれる文字の種類を判定する _isxxxxxメソッド_

Pythonで文字列に含まれる文字の種類を判定する方法について解説します。文字種類判定のメソッドはいくつかあるので目的に合わせて使い分けましょう。

文字列に含まれる文字種類の判定メソッド

Pythonで文字列に含まれる文字の種類を判定するにはstrクラスの文字種類判定用のメソッドを使用することができます。

strクラスの文字種類判定のメソッドの名前は「isxxxxx」というように、isから始まるメソッドになっているのが特徴です。

文字種類の判定メソッドとしては、以下のようなものがあります。

メソッド名概要説明
isdecimal10進数値であるかを判定する
isdigit数値であるかを判定する
isnumeric数値文字であるかを判定する
isalnum英数字であるかを判定する
isalpha英字であるかを判定する
isasciiASCII文字であるかを判定する
islower小文字であるかを判定する
isupper大文字であるかを判定する
istitle単語の先頭文字だけが大文字の文字列であるかを判定する
isprintable印字可能な文字であるかを判定する
isspace空白文字であるかを判定する
isidentifier有効な識別子であるかを判定する

以降では、各メソッドの使い方を簡単な使用例を見せつつご紹介します。

数値文字関連の判定メソッド

10進数値であるかを判定する ~isdecimalメソッド~

10進数であるかを判定するためには、isdecimalメソッドを使用します。

print('=== isdecimal ===')
print('12345'.isdecimal())
print('0b0101'.isdecimal())
【実行結果】
=== isdecimal ===
True
False

Note

isdecimalの公式ドキュメントの記載はこちらを参照してください。

数値であるかを判定する ~isdigitメソッド~

数値であるかを判定するためには、isdigitメソッドを使用します。

print('=== isdigit ===')
print('12345'.isdigit())
print('0b0101'.isdigit())
【実行結果】
=== isdigit ===
True
False

Note

isdigitの公式ドキュメントの記載はこちらを参照してください。

数値文字であるかを判定する ~isnumericメソッド~

数値文字(漢数字、ローマ数字など含む)であるかを判定するためには、isnumericメソッドを使用します。

print('=== isnumeric ===')
print('一万五千'.isnumeric())
print('0b0101'.isnumeric())
【実行結果】
=== isnumeric ===
True
False

Note

isnumericの公式ドキュメントの記載はこちらを参照してください。

isdecimal、isdigit、isnumericの結果の違い

上記の例ではisdecimal、isdigit、isnumericの結果の違いは少し分かりにくいため、結果の違いをまとめます。

文字種類isdecimalメソッドisdigitメソッドisnumericメソッド
半角数字('12345')TrueTrueTrue
上付き/下付き数字('⁰₀')FalseTrueTrue
全角数字('12345')TrueTrueTrue
漢数字('一弐参肆伍')FalseFalseTrue
ローマ数字('ⅠⅡⅢⅣⅤ')FalseFalseTrue

isdecimalメソッドでは、上付き/下付き数字('⁰₀')のようなものを判定することができませんが、isdigitメソッドを使えば判定することができます。

漢数字/ローマ数字のような文字も判定するには、isnumericメソッドを使えば判定することができます。

広い範囲で数字を判定したい場合には、isnumericメソッドを利用するのが一番手っ取り早いでしょう。

以下は上記の表の判定確認のためのサンプルプログラムです。

print("--- 半角数字('12345')")
print('12345'.isdecimal())
print('12345'.isdigit())
print('12345'.isnumeric())
print("--- 上付き数字、下付き数字('⁰₀')")
print('⁰₀'.isdecimal())
print('⁰₀'.isdigit())
print('⁰₀'.isnumeric())
print("--- 全角数字('12345')")
print('12345'.isdecimal())
print('12345'.isdigit())
print('12345'.isnumeric())
print("--- 漢数字('一弐参肆伍')")
print('一弐参肆伍'.isdecimal())
print('一弐参肆伍'.isdigit())
print('一弐参肆伍'.isnumeric())
print("--- ローマ数字('ⅠⅡⅢⅣⅤ')")
print('ⅠⅡⅢⅣⅤ'.isdecimal())
print('ⅠⅡⅢⅣⅤ'.isdigit())
print('ⅠⅡⅢⅣⅤ'.isnumeric())
【実行結果】
--- 半角数字('12345')
True
True
True
--- 上付き数字、下付き数字('⁰₀')
False
True
True
--- 全角数字('12345')
True
True
True
--- 漢数字('一弐参肆伍')
False
False
True
--- ローマ数字('ⅠⅡⅢⅣⅤ')
False
False
True

文字関連の判定メソッド

英数字であるかを判定する ~isalnumメソッド~

英数字であるかを判定するためには、isalnumメソッドを使用します。

print('=== isalnum ===')
print('abc12345'.isalnum())
print('abc+-*'.isalnum())
【実行結果】
=== isalnum ===
True
False

Note

isalnumの公式ドキュメントの記載はこちらを参照してください。

英字であるかを判定する ~isalphaメソッド~

英字であるかを判定するためには、isalphaメソッドを使用します。

print('=== isalpha ===')
print('abcdefgh'.isalpha())
print('abc12345'.isalpha())
【実行結果】
=== isalpha ===
True
False

Note

isalphaの公式ドキュメントの記載はこちらを参照してください。

ASCII文字であるかを判定する ~isasciiメソッド~

ASCII文字であるかを判定するためには、isasciiメソッドを使用します。isasciiメソッドはPython3.7で追加されたメソッドになります。

print('=== isascii ===')
print('abcdefgh'.isascii())
print('あいうえお'.isascii())
【実行結果】
=== isascii ===
True
False

Note

isasciiの公式ドキュメントの記載はこちらを参照してください。

小文字であるかを判定する ~islowerメソッド~

小文字であるかを判定するためには、islowerメソッドを使用します。

print('=== islower ===')
print('python'.islower())
print('PYTHON'.islower())
【実行結果】
=== islower ===
True
False

Note

islowerの公式ドキュメントの記載はこちらを参照してください。

大文字であるかを判定する ~isupperメソッド~

大文字であるかを判定するためには、isupperメソッドを使用します。

print('=== isupper ===')
print('PYTHON'.isupper())
print('python'.isupper())
【実行結果】
=== isupper ===
True
False

Note

isupperの公式ドキュメントの記載はこちらを参照してください。

単語の先頭文字だけが大文字の文字列であるかを判定する ~istitleメソッド~

文字列の単語の先頭文字だけが大文字の文字列であるかを判定するには、istitleメソッドを使用します。

print('=== istitle ===')
print('Python Program'.istitle())
print('python program'.istitle())
【実行結果】
=== istitle ===
True
False

Note

istitleの公式ドキュメントの記載はこちらを参照してください。

印字可能な文字であるかを判定する ~isprintableメソッド~

印字可能な文字であるかを判定するためには、isprintableメソッドを使用します。

print('=== isprintable ===')
print('Python Program'.isprintable())
print('Python\nProgram'.isprintable())
【実行結果】
=== isprintable ===
True
False

Note

isprintableの公式ドキュメントの記載はこちらを参照してください。

空白文字であるかを判定する ~isspaceメソッド~

空白文字であるかを判定するためには、isspaceメソッドを使用します。

print('=== isspace ===')
print(' '.isspace())
print('abcdefgh'.isspace())
【実行結果】
=== isspace ===
True
False

Note

isspaceの公式ドキュメントの記載はこちらを参照してください。

有効な識別子であるかを判定する ~isidentifierメソッド~

文字列が有効な識別子であるかを判定するためには、isidentifierメソッドを使用します。

ここで有効なと言っているのはPythonの識別子 (identifier) およびキーワード (keyword) の定義においてどうかということです。

print('=== isidentifier ===')
print('pytyon_12345'.isidentifier())
print('python-12345'.isidentifier())
【実行結果】
=== isidentifier ===
True
False

Note

isidentifierの公式ドキュメントの記載はこちらを参照してください。