DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

isdecimal, isdigit & isnumeric in Python

Buy Me a Coffee

*Memo for string, bytes and bytearray functions:

*Memo for a string, bytes and bytearray:


isdecimal() < isdigit() < isnumeric(). *True is returned for more numeric characters as going from the left to the right.


str.isdecimal() can check if the string only has decimal characters and isn't empty as shown below:

*Memo:

  • It has no arguments.
  • bytes.isdecimal() and bytearray.isdecimal() don't exist for a bytes and bytearray respectively.

<String>:

print('12345'.isdecimal())     # Half-Width Arabic Numeral
print('12345'.isdecimal()) # Full-Width Arabic Numeral
print('١٢٣٤٥'.isdecimal())     # 12345 (Eastern Arabic Numeral)
# True

print('¹²³⁴⁵'.isdecimal())     # 12345 (Superscript Arabic Numeral)
print('₁₂₃₄₅'.isdecimal())     # 12345 (Subscript Arabic Numeral)
print(''.isdecimal())        # 12 (Half-Width Roman Numeral)
print(''.isdecimal())       # 12 (Full-Width Roman Numeral)
print('十二'.isdecimal())      # 12 (Japanese Kanji Numeral)
print('壱弐'.isdecimal())      # 12 (Japanese Kanji Numeral)
print('-12345'.isdecimal())
print('1 2 3 4 5'.isdecimal()) # With spaces
print('1.2345'.isdecimal())
print('1,2345'.isdecimal())
print('1.23+4.5j'.isdecimal())
print('xii'.isdecimal())       # 12 (Half-Width Alphabet)
print('XII'.isdecimal())       # 12 (Full-Width Alphabet)
print('0b1100'.isdecimal())    # 12 (Binary)
print('0o14'.isdecimal())      # 12 (Octal)
print('0xc'.isdecimal())       # 12 (Hexadecimal)
print(''.isdecimal())
# False

# Extra
print('①②③④⑤'.isdecimal())
print('⓵⓶⓷⓸⓹'.isdecimal())
print('❶❷❸❹❺'.isdecimal())
print('➊➋➌➍➎'.isdecimal())
print('⑴⑵⑶⑷⑸'.isdecimal())
print('⒈⒉⒊⒋⒌'.isdecimal())
print('1⃣2⃣3⃣4⃣5⃣'.isdecimal())
# False
Enter fullscreen mode Exit fullscreen mode

str.isdigit() and bytes.isdigit() or bytearray.isdigit() can check if the string and bytes or bytearray respectively only have digital characters and ASCII decimal digital bytes and aren't empty as shown below:

*Memos:

  • Each has no arguments.

<String>:

print('12345'.isdigit())     # Half-Width Arabic Numeral
print('12345'.isdigit()) # Full-Width Arabic Numeral
print('١٢٣٤٥'.isdigit())     # 12345 (Eastern Arabic Numeral)
print('¹²³⁴⁵'.isdigit())     # 12345 (Superscript Arabic Numeral)
print('₁₂₃₄₅'.isdigit())     # 12345 (Subscript Arabic Numeral)
# True

print(''.isdigit())        # 12 (Half-Width Roman Numeral)
print(''.isdigit())       # 12 (Full-Width Roman Numeral)
print('十二'.isdigit())      # 12 (Japanese Kanji Numeral)
print('壱弐'.isdigit())      # 12 (Japanese Kanji Numeral)
print('-12345'.isdigit())
print('1 2 3 4 5'.isdigit()) # With spaces
print('1.2345'.isdigit())
print('1,2345'.isdigit())
print('1.23+4.5j'.isdigit())
print('xii'.isdigit())       # 12 (Half-Width Alphabet)
print('XII'.isdigit())       # 12 (Full-Width Alphabet)
print('0b1100'.isdigit())    # 12 (Binary)
print('0o14'.isdigit())      # 12 (Octal)
print('0xc'.isdigit())       # 12 (Hexadecimal)
print(''.isdigit())
# False

# Extra
print('①②③④⑤'.isdigit())
print('⓵⓶⓷⓸⓹'.isdigit())
print('❶❷❸❹❺'.isdigit())
print('➊➋➌➍➎'.isdigit())
print('⑴⑵⑶⑷⑸'.isdigit())
print('⒈⒉⒊⒋⒌'.isdigit())
# True

print('1⃣2⃣3⃣4⃣5⃣'.isdigit())
# False
Enter fullscreen mode Exit fullscreen mode

<Bytes & Bytearray>:

bytes:

print('12345'.encode().isdigit())     # Half-Width Arabic Numeral
# True

print('12345'.encode().isdigit()) # Full-Width Arabic Numeral
print('١٢٣٤٥'.encode().isdigit())     # 12345 (Eastern Arabic Numeral)
print('¹²³⁴⁵'.encode().isdigit())     # 12345 (Superscript Arabic Numeral)
print('₁₂₃₄₅'.encode().isdigit())     # 12345 (Subscript Arabic Numeral)
print(''.encode().isdigit())        # 12 (Half-Width Roman Numeral)
print(''.encode().isdigit())       # 12 (Full-Width Roman Numeral)
print('十二'.encode().isdigit())      # 12 (Japanese Kanji Numeral)
print('壱弐'.encode().isdigit())      # 12 (Japanese Kanji Numeral)
print('-12345'.encode().isdigit())
print('1 2 3 4 5'.encode().isdigit()) # With spaces
print('1.2345'.encode().isdigit())
print('1,2345'.encode().isdigit())
print('1.23+4.5j'.encode().isdigit())
print('xii'.encode().isdigit())       # 12 (Half-Width Alphabet)
print('XII'.encode().isdigit())       # 12 (Full-Width Alphabet)
print('0b1100'.encode().isdigit())    # 12 (Binary)
print('0o14'.encode().isdigit())      # 12 (Octal)
print('0xc'.encode().isdigit())       # 12 (Hexadecimal)
print(''.encode().isdigit())
# False

# Extra
print('①②③④⑤'.encode().isdigit())
print('⓵⓶⓷⓸⓹'.encode().isdigit())
print('❶❷❸❹❺'.encode().isdigit())
print('➊➋➌➍➎'.encode().isdigit())
print('⑴⑵⑶⑷⑸'.encode().isdigit())
print('⒈⒉⒊⒋⒌'.encode().isdigit())
print('1⃣2⃣3⃣4⃣5⃣'.encode().isdigit())
# False
Enter fullscreen mode Exit fullscreen mode

bytearray:

ba = bytearray

print(ba('12345'.encode()).isdigit())     # Half-Width Arabic Numeral
# True

print(ba('12345'.encode()).isdigit()) # Full-Width Arabic Numeral
print(ba('١٢٣٤٥'.encode()).isdigit())     # 12345 (Eastern Arabic Numeral)
print(ba('¹²³⁴⁵'.encode()).isdigit())     # 12345 (Superscript Arabic Numeral)
print(ba('₁₂₃₄₅'.encode()).isdigit())     # 12345 (Subscript Arabic Numeral)
print(ba(''.encode()).isdigit())        # 12 (Half-Width Roman Numeral)
print(ba(''.encode()).isdigit())       # 12 (Full-Width Roman Numeral)
print(ba('十二'.encode()).isdigit())      # 12 (Japanese Kanji Numeral)
print(ba('壱弐'.encode()).isdigit())      # 12 (Japanese Kanji Numeral)
print(ba('-12345'.encode()).isdigit())
print(ba('1 2 3 4 5'.encode()).isdigit()) # With spaces
print(ba('1.2345'.encode()).isdigit())
print(ba('1,2345'.encode()).isdigit())
print(ba('1.23+4.5j'.encode()).isdigit())
print(ba('xii'.encode()).isdigit())       # 12 (Half-Width Alphabet)
print(ba('XII'.encode()).isdigit())       # 12 (Full-Width Alphabet)
print(ba('0b1100'.encode()).isdigit())    # 12 (Binary)
print(ba('0o14'.encode()).isdigit())      # 12 (Octal)
print(ba('0xc'.encode()).isdigit())       # 12 (Hexadecimal)
print(ba(''.encode()).isdigit())
# False

# Extra
print(ba('①②③④⑤'.encode()).isdigit())
print(ba('⓵⓶⓷⓸⓹'.encode()).isdigit())
print(ba('❶❷❸❹❺'.encode()).isdigit())
print(ba('➊➋➌➍➎'.encode()).isdigit())
print(ba('⑴⑵⑶⑷⑸'.encode()).isdigit())
print(ba('⒈⒉⒊⒋⒌'.encode()).isdigit())
print(ba('1⃣2⃣3⃣4⃣5⃣'.encode()).isdigit())
# False
Enter fullscreen mode Exit fullscreen mode

str.isnumeric() can check if a string only has numeric characters and isn't empty as shown below:

*Memo:

  • It has no arguments.
  • bytes.isdecimal() and bytearray.isdecimal() don't exist for a bytes and bytearray respectively.

<String>:

print('12345'.isnumeric())     # Half-Width Arabic Numeral
print('12345'.isnumeric()) # Full-Width Arabic Numeral
print('١٢٣٤٥'.isnumeric())     # 12345 (Eastern Arabic Numeral)
print('¹²³⁴⁵'.isnumeric())     # 12345 (Superscript Arabic Numeral)
print('₁₂₃₄₅'.isnumeric())     # 12345 (Subscript Arabic Numeral)
print(''.isnumeric())        # 12 (Half-Width Roman Numeral)
print(''.isnumeric())       # 12 (Full-Width Roman Numeral)
print('十二'.isnumeric())      # 12 (Japanese Kanji Numeral)
print('壱弐'.isnumeric())      # 12 (Japanese Kanji Numeral)
# True

print('-12345'.isnumeric())
print('1 2 3 4 5'.isnumeric()) # With spaces
print('1.2345'.isnumeric())
print('1,2345'.isnumeric())
print('1.23+4.5j'.isnumeric())
print('xii'.isnumeric())       # 12 (Half-Width Alphabet)
print('XII'.isnumeric())       # 12 (Full-Width Alphabet)
print('0b1100'.isnumeric())    # 12 (Binary)
print('0o14'.isnumeric())      # 12 (Octal)
print('0xc'.isnumeric())       # 12 (Hexadecimal)
print(''.isnumeric())
# False

# Extra
print('①②③④⑤'.isnumeric())
print('⓵⓶⓷⓸⓹'.isnumeric())
print('❶❷❸❹❺'.isnumeric())
print('➊➋➌➍➎'.isnumeric())
print('⑴⑵⑶⑷⑸'.isnumeric())
print('⒈⒉⒊⒋⒌'.isnumeric())
# True

print('1⃣2⃣3⃣4⃣5⃣'.isnumeric())
# False
Enter fullscreen mode Exit fullscreen mode

Top comments (0)