str.isdecimal() and str.isdigit() difference example
Question:
Reading python docs I have come to .isdecimal() and .isdigit() string functions and i’m not finding literature too clear on their usable distinction. Could someone supply me with code examples of where these two functions differentiate please.
Similar behaviour:
>>> str.isdecimal('1')
True
>>> str.isdigit('1')
True
>>> str.isdecimal('1.0')
False
>>> str.isdigit('1.0')
False
>>> str.isdecimal('1/2')
False
>>> str.isdigit('1/2')
False
Answers:
There are differences, but they’re somewhat rare*. It mainly crops up with various unicode characters, such as 2
:
>>> c = 'u00B2'
>>> c.isdecimal()
False
>>> c.isdigit()
True
You can also go further down the careful-unicode-distinction rabbit hole with the isnumeric
method:
>>> c = 'u00BD' # ½
>>> c.isdecimal()
False
>>> c.isdigit()
False
>>> c.isnumeric()
True
*At least, I’ve never encountered production code that needs to distinguish between strings that contain different types of these exceptional situations, but surely use cases exist somewhere.
Lets see some examples:
str.isdecimal() (Only Decimal Numbers)
Is 34 a decimal number? –> Yes
print("34".isdecimal()) #True
Is superscript 2 a decimal number? –> No
print("u00B2")
print("u00B2".isdecimal()) #False
str.isdigit() (Decimals, Subscripts, Superscripts)
Is 34 a digit? –> Yes
print("34".isdigit()) #True
Is superscript 2 a digit? –> Yes
print("u00B2")
print("u00B2".isdigit()) #True
str.isnumeric() (Decimals, Subscripts, Superscripts, Vulgar Fractions, Roman Numerals, Currency Numerators)
Is 34 a numeric number? –> Yes
print("34".isnumeric()) #True
Is superscript 2 a numeric number? –> Yes
print("u00B2")
print("u00B2".isnumeric()) #True
Is Vulgar Fraction one Quarter numeric number? –>Yes
print("u00BC")
print("u00BC".isnumeric()) #True
If you doubt, my advice – to code, to look a results, to draw conclusions.
A code
In [115]: import itertools
...:
...: line = '-' * 37
...: print(line)
...: print("| № | isdigit | isdecimal | chr")
...: print(line)
...: for number in itertools.chain(range(1000), range(4969, 4978), range(8304, 11000)):
...: char = chr(number)
...: if (char.isdigit() or char.isdecimal()):
...: print('| {0:>6} | {1:^7} | {2:^9} | {3:3} '.format(
...: number,
...: '+' if char.isdigit() else '-',
...: '+' if char.isdecimal() else '-',
...: char
...: )
...: )
...:
Look a results
-------------------------------------
| № | isdigit | isdecimal | chr
-------------------------------------
| 48 | + | + | 0
| 49 | + | + | 1
| 50 | + | + | 2
| 51 | + | + | 3
| 52 | + | + | 4
| 53 | + | + | 5
| 54 | + | + | 6
| 55 | + | + | 7
| 56 | + | + | 8
| 57 | + | + | 9
| 178 | + | - | ²
| 179 | + | - | ³
| 185 | + | - | ¹
| 4969 | + | - | ፩
| 4970 | + | - | ፪
| 4971 | + | - | ፫
| 4972 | + | - | ፬
| 4973 | + | - | ፭
| 4974 | + | - | ፮
| 4975 | + | - | ፯
| 4976 | + | - | ፰
| 4977 | + | - | ፱
| 8304 | + | - | ⁰
| 8308 | + | - | ⁴
| 8309 | + | - | ⁵
| 8310 | + | - | ⁶
| 8311 | + | - | ⁷
| 8312 | + | - | ⁸
| 8313 | + | - | ⁹
| 8320 | + | - | ₀
| 8321 | + | - | ₁
| 8322 | + | - | ₂
| 8323 | + | - | ₃
| 8324 | + | - | ₄
| 8325 | + | - | ₅
| 8326 | + | - | ₆
| 8327 | + | - | ₇
| 8328 | + | - | ₈
| 8329 | + | - | ₉
| 9312 | + | - | ①
| 9313 | + | - | ②
| 9314 | + | - | ③
| 9315 | + | - | ④
| 9316 | + | - | ⑤
| 9317 | + | - | ⑥
| 9318 | + | - | ⑦
| 9319 | + | - | ⑧
| 9320 | + | - | ⑨
| 9332 | + | - | ⑴
| 9333 | + | - | ⑵
| 9334 | + | - | ⑶
| 9335 | + | - | ⑷
| 9336 | + | - | ⑸
| 9337 | + | - | ⑹
| 9338 | + | - | ⑺
| 9339 | + | - | ⑻
| 9340 | + | - | ⑼
| 9352 | + | - | ⒈
| 9353 | + | - | ⒉
| 9354 | + | - | ⒊
| 9355 | + | - | ⒋
| 9356 | + | - | ⒌
| 9357 | + | - | ⒍
| 9358 | + | - | ⒎
| 9359 | + | - | ⒏
| 9360 | + | - | ⒐
| 9450 | + | - | ⓪
| 9461 | + | - | ⓵
| 9462 | + | - | ⓶
| 9463 | + | - | ⓷
| 9464 | + | - | ⓸
| 9465 | + | - | ⓹
| 9466 | + | - | ⓺
| 9467 | + | - | ⓻
| 9468 | + | - | ⓼
| 9469 | + | - | ⓽
| 9471 | + | - | ⓿
| 10102 | + | - | ❶
| 10103 | + | - | ❷
| 10104 | + | - | ❸
| 10105 | + | - | ❹
| 10106 | + | - | ❺
| 10107 | + | - | ❻
| 10108 | + | - | ❼
| 10109 | + | - | ❽
| 10110 | + | - | ❾
| 10112 | + | - | ➀
| 10113 | + | - | ➁
| 10114 | + | - | ➂
| 10115 | + | - | ➃
| 10116 | + | - | ➄
| 10117 | + | - | ➅
| 10118 | + | - | ➆
| 10119 | + | - | ➇
| 10120 | + | - | ➈
| 10122 | + | - | ➊
| 10123 | + | - | ➋
| 10124 | + | - | ➌
| 10125 | + | - | ➍
| 10126 | + | - | ➎
| 10127 | + | - | ➏
| 10128 | + | - | ➐
| 10129 | + | - | ➑
| 10130 | + | - | ➒
Draw a conclusions
As you can see, main difference between the function str.isdecimal() and str.isdigit() is that: the function str.isdecimal() return True only for numbers from 0 to 9, at the same time the function str.isdigit() return True for some other unicode-supported chars.
Completing the answer from PADYMKO, we can add the other function of interest and extend the code
Code
import itertools
line = '-' * 49
print(line)
print("| № | isdigit | isdecimal | isnumeric | chr |")
print(line)
for number in itertools.chain(range(1000), range(4969, 4978), range(8304, 11000)):
char = chr(number)
if (char.isdigit() or char.isdecimal() or char.isnumeric()):
print('| {0:>6} | {1:^7} | {2:^9} | {3:^9} | {4:3} |'.format(
number,
'+' if char.isdigit() else '-',
'+' if char.isdecimal() else '-',
'+' if char.isnumeric() else '-',
char
)
)
And the results
-------------------------------------------------
| № | isdigit | isdecimal | isnumeric | chr |
-------------------------------------------------
| 48 | + | + | + | 0 |
| 49 | + | + | + | 1 |
| 50 | + | + | + | 2 |
| 51 | + | + | + | 3 |
| 52 | + | + | + | 4 |
| 53 | + | + | + | 5 |
| 54 | + | + | + | 6 |
| 55 | + | + | + | 7 |
| 56 | + | + | + | 8 |
| 57 | + | + | + | 9 |
| 178 | + | - | + | ² |
| 179 | + | - | + | ³ |
| 185 | + | - | + | ¹ |
| 188 | - | - | + | ¼ |
| 189 | - | - | + | ½ |
| 190 | - | - | + | ¾ |
| 4969 | + | - | + | ፩ |
| 4970 | + | - | + | ፪ |
| 4971 | + | - | + | ፫ |
| 4972 | + | - | + | ፬ |
| 4973 | + | - | + | ፭ |
| 4974 | + | - | + | ፮ |
| 4975 | + | - | + | ፯ |
| 4976 | + | - | + | ፰ |
| 4977 | + | - | + | ፱ |
| 8304 | + | - | + | ⁰ |
| 8308 | + | - | + | ⁴ |
| 8309 | + | - | + | ⁵ |
| 8310 | + | - | + | ⁶ |
| 8311 | + | - | + | ⁷ |
| 8312 | + | - | + | ⁸ |
| 8313 | + | - | + | ⁹ |
| 8320 | + | - | + | ₀ |
| 8321 | + | - | + | ₁ |
| 8322 | + | - | + | ₂ |
| 8323 | + | - | + | ₃ |
| 8324 | + | - | + | ₄ |
| 8325 | + | - | + | ₅ |
| 8326 | + | - | + | ₆ |
| 8327 | + | - | + | ₇ |
| 8328 | + | - | + | ₈ |
| 8329 | + | - | + | ₉ |
| 8528 | - | - | + | ⅐ |
| 8529 | - | - | + | ⅑ |
| 8530 | - | - | + | ⅒ |
| 8531 | - | - | + | ⅓ |
| 8532 | - | - | + | ⅔ |
| 8533 | - | - | + | ⅕ |
| 8534 | - | - | + | ⅖ |
| 8535 | - | - | + | ⅗ |
| 8536 | - | - | + | ⅘ |
| 8537 | - | - | + | ⅙ |
| 8538 | - | - | + | ⅚ |
| 8539 | - | - | + | ⅛ |
| 8540 | - | - | + | ⅜ |
| 8541 | - | - | + | ⅝ |
| 8542 | - | - | + | ⅞ |
| 8543 | - | - | + | ⅟ |
| 8544 | - | - | + | Ⅰ |
| 8545 | - | - | + | Ⅱ |
| 8546 | - | - | + | Ⅲ |
| 8547 | - | - | + | Ⅳ |
| 8548 | - | - | + | Ⅴ |
| 8549 | - | - | + | Ⅵ |
| 8550 | - | - | + | Ⅶ |
| 8551 | - | - | + | Ⅷ |
| 8552 | - | - | + | Ⅸ |
| 8553 | - | - | + | Ⅹ |
| 8554 | - | - | + | Ⅺ |
| 8555 | - | - | + | Ⅻ |
| 8556 | - | - | + | Ⅼ |
| 8557 | - | - | + | Ⅽ |
| 8558 | - | - | + | Ⅾ |
| 8559 | - | - | + | Ⅿ |
| 8560 | - | - | + | ⅰ |
| 8561 | - | - | + | ⅱ |
| 8562 | - | - | + | ⅲ |
| 8563 | - | - | + | ⅳ |
| 8564 | - | - | + | ⅴ |
| 8565 | - | - | + | ⅵ |
| 8566 | - | - | + | ⅶ |
| 8567 | - | - | + | ⅷ |
| 8568 | - | - | + | ⅸ |
| 8569 | - | - | + | ⅹ |
| 8570 | - | - | + | ⅺ |
| 8571 | - | - | + | ⅻ |
| 8572 | - | - | + | ⅼ |
| 8573 | - | - | + | ⅽ |
| 8574 | - | - | + | ⅾ |
| 8575 | - | - | + | ⅿ |
| 8576 | - | - | + | ↀ |
| 8577 | - | - | + | ↁ |
| 8578 | - | - | + | ↂ |
| 8581 | - | - | + | ↅ |
| 8582 | - | - | + | ↆ |
| 8583 | - | - | + | ↇ |
| 8584 | - | - | + | ↈ |
| 8585 | - | - | + | ↉ |
| 9312 | + | - | + | ① |
| 9313 | + | - | + | ② |
| 9314 | + | - | + | ③ |
| 9315 | + | - | + | ④ |
| 9316 | + | - | + | ⑤ |
| 9317 | + | - | + | ⑥ |
| 9318 | + | - | + | ⑦ |
| 9319 | + | - | + | ⑧ |
| 9320 | + | - | + | ⑨ |
| 9321 | - | - | + | ⑩ |
| 9322 | - | - | + | ⑪ |
| 9323 | - | - | + | ⑫ |
| 9324 | - | - | + | ⑬ |
| 9325 | - | - | + | ⑭ |
| 9326 | - | - | + | ⑮ |
| 9327 | - | - | + | ⑯ |
| 9328 | - | - | + | ⑰ |
| 9329 | - | - | + | ⑱ |
| 9330 | - | - | + | ⑲ |
| 9331 | - | - | + | ⑳ |
| 9332 | + | - | + | ⑴ |
| 9333 | + | - | + | ⑵ |
| 9334 | + | - | + | ⑶ |
| 9335 | + | - | + | ⑷ |
| 9336 | + | - | + | ⑸ |
| 9337 | + | - | + | ⑹ |
| 9338 | + | - | + | ⑺ |
| 9339 | + | - | + | ⑻ |
| 9340 | + | - | + | ⑼ |
| 9341 | - | - | + | ⑽ |
| 9342 | - | - | + | ⑾ |
| 9343 | - | - | + | ⑿ |
| 9344 | - | - | + | ⒀ |
| 9345 | - | - | + | ⒁ |
| 9346 | - | - | + | ⒂ |
| 9347 | - | - | + | ⒃ |
| 9348 | - | - | + | ⒄ |
| 9349 | - | - | + | ⒅ |
| 9350 | - | - | + | ⒆ |
| 9351 | - | - | + | ⒇ |
| 9352 | + | - | + | ⒈ |
| 9353 | + | - | + | ⒉ |
| 9354 | + | - | + | ⒊ |
| 9355 | + | - | + | ⒋ |
| 9356 | + | - | + | ⒌ |
| 9357 | + | - | + | ⒍ |
| 9358 | + | - | + | ⒎ |
| 9359 | + | - | + | ⒏ |
| 9360 | + | - | + | ⒐ |
| 9361 | - | - | + | ⒑ |
| 9362 | - | - | + | ⒒ |
| 9363 | - | - | + | ⒓ |
| 9364 | - | - | + | ⒔ |
| 9365 | - | - | + | ⒕ |
| 9366 | - | - | + | ⒖ |
| 9367 | - | - | + | ⒗ |
| 9368 | - | - | + | ⒘ |
| 9369 | - | - | + | ⒙ |
| 9370 | - | - | + | ⒚ |
| 9371 | - | - | + | ⒛ |
| 9450 | + | - | + | ⓪ |
| 9451 | - | - | + | ⓫ |
| 9452 | - | - | + | ⓬ |
| 9453 | - | - | + | ⓭ |
| 9454 | - | - | + | ⓮ |
| 9455 | - | - | + | ⓯ |
| 9456 | - | - | + | ⓰ |
| 9457 | - | - | + | ⓱ |
| 9458 | - | - | + | ⓲ |
| 9459 | - | - | + | ⓳ |
| 9460 | - | - | + | ⓴ |
| 9461 | + | - | + | ⓵ |
| 9462 | + | - | + | ⓶ |
| 9463 | + | - | + | ⓷ |
| 9464 | + | - | + | ⓸ |
| 9465 | + | - | + | ⓹ |
| 9466 | + | - | + | ⓺ |
| 9467 | + | - | + | ⓻ |
| 9468 | + | - | + | ⓼ |
| 9469 | + | - | + | ⓽ |
| 9470 | - | - | + | ⓾ |
| 9471 | + | - | + | ⓿ |
| 10102 | + | - | + | ❶ |
| 10103 | + | - | + | ❷ |
| 10104 | + | - | + | ❸ |
| 10105 | + | - | + | ❹ |
| 10106 | + | - | + | ❺ |
| 10107 | + | - | + | ❻ |
| 10108 | + | - | + | ❼ |
| 10109 | + | - | + | ❽ |
| 10110 | + | - | + | ❾ |
| 10111 | - | - | + | ❿ |
| 10112 | + | - | + | ➀ |
| 10113 | + | - | + | ➁ |
| 10114 | + | - | + | ➂ |
| 10115 | + | - | + | ➃ |
| 10116 | + | - | + | ➄ |
| 10117 | + | - | + | ➅ |
| 10118 | + | - | + | ➆ |
| 10119 | + | - | + | ➇ |
| 10120 | + | - | + | ➈ |
| 10121 | - | - | + | ➉ |
| 10122 | + | - | + | ➊ |
| 10123 | + | - | + | ➋ |
| 10124 | + | - | + | ➌ |
| 10125 | + | - | + | ➍ |
| 10126 | + | - | + | ➎ |
| 10127 | + | - | + | ➏ |
| 10128 | + | - | + | ➐ |
| 10129 | + | - | + | ➑ |
| 10130 | + | - | + | ➒ |
| 10131 | - | - | + | ➓ |
PS: I am sorry for the wrong format.
examples of isdigit
a = "123"
a.isdigit()
true
a = "1.234"
a.isdigit()
false
a ="2²"
a.isdigit()
b = "3₄"
b.isdigit()
The roman numerals, currency numerators and fractions
(usually written using unicode) are considered numeric
characters but not digits. The isdigit() returns False if
the string contains these characters
Roman Numerals : Ⅰ, Ⅱ ,Ⅺ
currency numerators : $,₹,€,£
fractions : ½,⅔,¼
c = "Ⅺ"
c.isdigit()
false
d = "₹"
d.isdigit()
false
e = "½"
e.isdigit()
false
some examples of isdecimal ()
a = "123"
a.isdecimal()
true
b = "3₄"
b.isdecimal()
c = "Ⅺ"
c.isdecimal()
false
d = "₹"
d.isdecimal()
false
e = "½"
e.isdecimal()
false
The superscript and subscripts are considered digit
characters but not decimals. If the string contains these
characters (usually written using unicode), isdecimal()
returns False.
Similarly, roman numerals, currency numerators and
fractions are considered numeric numbers (usually written
using unicode) but not decimals. The isdecimal() also
returns False in this case.
source link : https://www.programiz.com/python-programming/methods/string/isdecimal
https://www.programiz.com/python-programming/methods/string/isdigit
if i am wrong then please correct me
just a new learner
isdigit()
- 0123456789 only
- the value is safe to be parsed to an integer.
- used for validating text & file input data
- can be called from bytearray and bytes as well.
- not used for formatting output text
isdecimal()
- value should be "displayed as a number"
- eg: don’t hyphenate across a line break.
- not used for validating numerical input [ie int("₂") raises ValueError]
- can be used to inform "natural text sorting" algorithms.
- can be used for validating chemical formulas: "H₂O" and "H2O"
Reading python docs I have come to .isdecimal() and .isdigit() string functions and i’m not finding literature too clear on their usable distinction. Could someone supply me with code examples of where these two functions differentiate please.
Similar behaviour:
>>> str.isdecimal('1')
True
>>> str.isdigit('1')
True
>>> str.isdecimal('1.0')
False
>>> str.isdigit('1.0')
False
>>> str.isdecimal('1/2')
False
>>> str.isdigit('1/2')
False
There are differences, but they’re somewhat rare*. It mainly crops up with various unicode characters, such as 2
:
>>> c = 'u00B2'
>>> c.isdecimal()
False
>>> c.isdigit()
True
You can also go further down the careful-unicode-distinction rabbit hole with the isnumeric
method:
>>> c = 'u00BD' # ½
>>> c.isdecimal()
False
>>> c.isdigit()
False
>>> c.isnumeric()
True
*At least, I’ve never encountered production code that needs to distinguish between strings that contain different types of these exceptional situations, but surely use cases exist somewhere.
Lets see some examples:
str.isdecimal() (Only Decimal Numbers)
Is 34 a decimal number? –> Yes
print("34".isdecimal()) #True
Is superscript 2 a decimal number? –> No
print("u00B2")
print("u00B2".isdecimal()) #False
str.isdigit() (Decimals, Subscripts, Superscripts)
Is 34 a digit? –> Yes
print("34".isdigit()) #True
Is superscript 2 a digit? –> Yes
print("u00B2")
print("u00B2".isdigit()) #True
str.isnumeric() (Decimals, Subscripts, Superscripts, Vulgar Fractions, Roman Numerals, Currency Numerators)
Is 34 a numeric number? –> Yes
print("34".isnumeric()) #True
Is superscript 2 a numeric number? –> Yes
print("u00B2")
print("u00B2".isnumeric()) #True
Is Vulgar Fraction one Quarter numeric number? –>Yes
print("u00BC")
print("u00BC".isnumeric()) #True
If you doubt, my advice – to code, to look a results, to draw conclusions.
A code
In [115]: import itertools
...:
...: line = '-' * 37
...: print(line)
...: print("| № | isdigit | isdecimal | chr")
...: print(line)
...: for number in itertools.chain(range(1000), range(4969, 4978), range(8304, 11000)):
...: char = chr(number)
...: if (char.isdigit() or char.isdecimal()):
...: print('| {0:>6} | {1:^7} | {2:^9} | {3:3} '.format(
...: number,
...: '+' if char.isdigit() else '-',
...: '+' if char.isdecimal() else '-',
...: char
...: )
...: )
...:
Look a results
-------------------------------------
| № | isdigit | isdecimal | chr
-------------------------------------
| 48 | + | + | 0
| 49 | + | + | 1
| 50 | + | + | 2
| 51 | + | + | 3
| 52 | + | + | 4
| 53 | + | + | 5
| 54 | + | + | 6
| 55 | + | + | 7
| 56 | + | + | 8
| 57 | + | + | 9
| 178 | + | - | ²
| 179 | + | - | ³
| 185 | + | - | ¹
| 4969 | + | - | ፩
| 4970 | + | - | ፪
| 4971 | + | - | ፫
| 4972 | + | - | ፬
| 4973 | + | - | ፭
| 4974 | + | - | ፮
| 4975 | + | - | ፯
| 4976 | + | - | ፰
| 4977 | + | - | ፱
| 8304 | + | - | ⁰
| 8308 | + | - | ⁴
| 8309 | + | - | ⁵
| 8310 | + | - | ⁶
| 8311 | + | - | ⁷
| 8312 | + | - | ⁸
| 8313 | + | - | ⁹
| 8320 | + | - | ₀
| 8321 | + | - | ₁
| 8322 | + | - | ₂
| 8323 | + | - | ₃
| 8324 | + | - | ₄
| 8325 | + | - | ₅
| 8326 | + | - | ₆
| 8327 | + | - | ₇
| 8328 | + | - | ₈
| 8329 | + | - | ₉
| 9312 | + | - | ①
| 9313 | + | - | ②
| 9314 | + | - | ③
| 9315 | + | - | ④
| 9316 | + | - | ⑤
| 9317 | + | - | ⑥
| 9318 | + | - | ⑦
| 9319 | + | - | ⑧
| 9320 | + | - | ⑨
| 9332 | + | - | ⑴
| 9333 | + | - | ⑵
| 9334 | + | - | ⑶
| 9335 | + | - | ⑷
| 9336 | + | - | ⑸
| 9337 | + | - | ⑹
| 9338 | + | - | ⑺
| 9339 | + | - | ⑻
| 9340 | + | - | ⑼
| 9352 | + | - | ⒈
| 9353 | + | - | ⒉
| 9354 | + | - | ⒊
| 9355 | + | - | ⒋
| 9356 | + | - | ⒌
| 9357 | + | - | ⒍
| 9358 | + | - | ⒎
| 9359 | + | - | ⒏
| 9360 | + | - | ⒐
| 9450 | + | - | ⓪
| 9461 | + | - | ⓵
| 9462 | + | - | ⓶
| 9463 | + | - | ⓷
| 9464 | + | - | ⓸
| 9465 | + | - | ⓹
| 9466 | + | - | ⓺
| 9467 | + | - | ⓻
| 9468 | + | - | ⓼
| 9469 | + | - | ⓽
| 9471 | + | - | ⓿
| 10102 | + | - | ❶
| 10103 | + | - | ❷
| 10104 | + | - | ❸
| 10105 | + | - | ❹
| 10106 | + | - | ❺
| 10107 | + | - | ❻
| 10108 | + | - | ❼
| 10109 | + | - | ❽
| 10110 | + | - | ❾
| 10112 | + | - | ➀
| 10113 | + | - | ➁
| 10114 | + | - | ➂
| 10115 | + | - | ➃
| 10116 | + | - | ➄
| 10117 | + | - | ➅
| 10118 | + | - | ➆
| 10119 | + | - | ➇
| 10120 | + | - | ➈
| 10122 | + | - | ➊
| 10123 | + | - | ➋
| 10124 | + | - | ➌
| 10125 | + | - | ➍
| 10126 | + | - | ➎
| 10127 | + | - | ➏
| 10128 | + | - | ➐
| 10129 | + | - | ➑
| 10130 | + | - | ➒
Draw a conclusions
As you can see, main difference between the function str.isdecimal() and str.isdigit() is that: the function str.isdecimal() return True only for numbers from 0 to 9, at the same time the function str.isdigit() return True for some other unicode-supported chars.
Completing the answer from PADYMKO, we can add the other function of interest and extend the code
Code
import itertools
line = '-' * 49
print(line)
print("| № | isdigit | isdecimal | isnumeric | chr |")
print(line)
for number in itertools.chain(range(1000), range(4969, 4978), range(8304, 11000)):
char = chr(number)
if (char.isdigit() or char.isdecimal() or char.isnumeric()):
print('| {0:>6} | {1:^7} | {2:^9} | {3:^9} | {4:3} |'.format(
number,
'+' if char.isdigit() else '-',
'+' if char.isdecimal() else '-',
'+' if char.isnumeric() else '-',
char
)
)
And the results
-------------------------------------------------
| № | isdigit | isdecimal | isnumeric | chr |
-------------------------------------------------
| 48 | + | + | + | 0 |
| 49 | + | + | + | 1 |
| 50 | + | + | + | 2 |
| 51 | + | + | + | 3 |
| 52 | + | + | + | 4 |
| 53 | + | + | + | 5 |
| 54 | + | + | + | 6 |
| 55 | + | + | + | 7 |
| 56 | + | + | + | 8 |
| 57 | + | + | + | 9 |
| 178 | + | - | + | ² |
| 179 | + | - | + | ³ |
| 185 | + | - | + | ¹ |
| 188 | - | - | + | ¼ |
| 189 | - | - | + | ½ |
| 190 | - | - | + | ¾ |
| 4969 | + | - | + | ፩ |
| 4970 | + | - | + | ፪ |
| 4971 | + | - | + | ፫ |
| 4972 | + | - | + | ፬ |
| 4973 | + | - | + | ፭ |
| 4974 | + | - | + | ፮ |
| 4975 | + | - | + | ፯ |
| 4976 | + | - | + | ፰ |
| 4977 | + | - | + | ፱ |
| 8304 | + | - | + | ⁰ |
| 8308 | + | - | + | ⁴ |
| 8309 | + | - | + | ⁵ |
| 8310 | + | - | + | ⁶ |
| 8311 | + | - | + | ⁷ |
| 8312 | + | - | + | ⁸ |
| 8313 | + | - | + | ⁹ |
| 8320 | + | - | + | ₀ |
| 8321 | + | - | + | ₁ |
| 8322 | + | - | + | ₂ |
| 8323 | + | - | + | ₃ |
| 8324 | + | - | + | ₄ |
| 8325 | + | - | + | ₅ |
| 8326 | + | - | + | ₆ |
| 8327 | + | - | + | ₇ |
| 8328 | + | - | + | ₈ |
| 8329 | + | - | + | ₉ |
| 8528 | - | - | + | ⅐ |
| 8529 | - | - | + | ⅑ |
| 8530 | - | - | + | ⅒ |
| 8531 | - | - | + | ⅓ |
| 8532 | - | - | + | ⅔ |
| 8533 | - | - | + | ⅕ |
| 8534 | - | - | + | ⅖ |
| 8535 | - | - | + | ⅗ |
| 8536 | - | - | + | ⅘ |
| 8537 | - | - | + | ⅙ |
| 8538 | - | - | + | ⅚ |
| 8539 | - | - | + | ⅛ |
| 8540 | - | - | + | ⅜ |
| 8541 | - | - | + | ⅝ |
| 8542 | - | - | + | ⅞ |
| 8543 | - | - | + | ⅟ |
| 8544 | - | - | + | Ⅰ |
| 8545 | - | - | + | Ⅱ |
| 8546 | - | - | + | Ⅲ |
| 8547 | - | - | + | Ⅳ |
| 8548 | - | - | + | Ⅴ |
| 8549 | - | - | + | Ⅵ |
| 8550 | - | - | + | Ⅶ |
| 8551 | - | - | + | Ⅷ |
| 8552 | - | - | + | Ⅸ |
| 8553 | - | - | + | Ⅹ |
| 8554 | - | - | + | Ⅺ |
| 8555 | - | - | + | Ⅻ |
| 8556 | - | - | + | Ⅼ |
| 8557 | - | - | + | Ⅽ |
| 8558 | - | - | + | Ⅾ |
| 8559 | - | - | + | Ⅿ |
| 8560 | - | - | + | ⅰ |
| 8561 | - | - | + | ⅱ |
| 8562 | - | - | + | ⅲ |
| 8563 | - | - | + | ⅳ |
| 8564 | - | - | + | ⅴ |
| 8565 | - | - | + | ⅵ |
| 8566 | - | - | + | ⅶ |
| 8567 | - | - | + | ⅷ |
| 8568 | - | - | + | ⅸ |
| 8569 | - | - | + | ⅹ |
| 8570 | - | - | + | ⅺ |
| 8571 | - | - | + | ⅻ |
| 8572 | - | - | + | ⅼ |
| 8573 | - | - | + | ⅽ |
| 8574 | - | - | + | ⅾ |
| 8575 | - | - | + | ⅿ |
| 8576 | - | - | + | ↀ |
| 8577 | - | - | + | ↁ |
| 8578 | - | - | + | ↂ |
| 8581 | - | - | + | ↅ |
| 8582 | - | - | + | ↆ |
| 8583 | - | - | + | ↇ |
| 8584 | - | - | + | ↈ |
| 8585 | - | - | + | ↉ |
| 9312 | + | - | + | ① |
| 9313 | + | - | + | ② |
| 9314 | + | - | + | ③ |
| 9315 | + | - | + | ④ |
| 9316 | + | - | + | ⑤ |
| 9317 | + | - | + | ⑥ |
| 9318 | + | - | + | ⑦ |
| 9319 | + | - | + | ⑧ |
| 9320 | + | - | + | ⑨ |
| 9321 | - | - | + | ⑩ |
| 9322 | - | - | + | ⑪ |
| 9323 | - | - | + | ⑫ |
| 9324 | - | - | + | ⑬ |
| 9325 | - | - | + | ⑭ |
| 9326 | - | - | + | ⑮ |
| 9327 | - | - | + | ⑯ |
| 9328 | - | - | + | ⑰ |
| 9329 | - | - | + | ⑱ |
| 9330 | - | - | + | ⑲ |
| 9331 | - | - | + | ⑳ |
| 9332 | + | - | + | ⑴ |
| 9333 | + | - | + | ⑵ |
| 9334 | + | - | + | ⑶ |
| 9335 | + | - | + | ⑷ |
| 9336 | + | - | + | ⑸ |
| 9337 | + | - | + | ⑹ |
| 9338 | + | - | + | ⑺ |
| 9339 | + | - | + | ⑻ |
| 9340 | + | - | + | ⑼ |
| 9341 | - | - | + | ⑽ |
| 9342 | - | - | + | ⑾ |
| 9343 | - | - | + | ⑿ |
| 9344 | - | - | + | ⒀ |
| 9345 | - | - | + | ⒁ |
| 9346 | - | - | + | ⒂ |
| 9347 | - | - | + | ⒃ |
| 9348 | - | - | + | ⒄ |
| 9349 | - | - | + | ⒅ |
| 9350 | - | - | + | ⒆ |
| 9351 | - | - | + | ⒇ |
| 9352 | + | - | + | ⒈ |
| 9353 | + | - | + | ⒉ |
| 9354 | + | - | + | ⒊ |
| 9355 | + | - | + | ⒋ |
| 9356 | + | - | + | ⒌ |
| 9357 | + | - | + | ⒍ |
| 9358 | + | - | + | ⒎ |
| 9359 | + | - | + | ⒏ |
| 9360 | + | - | + | ⒐ |
| 9361 | - | - | + | ⒑ |
| 9362 | - | - | + | ⒒ |
| 9363 | - | - | + | ⒓ |
| 9364 | - | - | + | ⒔ |
| 9365 | - | - | + | ⒕ |
| 9366 | - | - | + | ⒖ |
| 9367 | - | - | + | ⒗ |
| 9368 | - | - | + | ⒘ |
| 9369 | - | - | + | ⒙ |
| 9370 | - | - | + | ⒚ |
| 9371 | - | - | + | ⒛ |
| 9450 | + | - | + | ⓪ |
| 9451 | - | - | + | ⓫ |
| 9452 | - | - | + | ⓬ |
| 9453 | - | - | + | ⓭ |
| 9454 | - | - | + | ⓮ |
| 9455 | - | - | + | ⓯ |
| 9456 | - | - | + | ⓰ |
| 9457 | - | - | + | ⓱ |
| 9458 | - | - | + | ⓲ |
| 9459 | - | - | + | ⓳ |
| 9460 | - | - | + | ⓴ |
| 9461 | + | - | + | ⓵ |
| 9462 | + | - | + | ⓶ |
| 9463 | + | - | + | ⓷ |
| 9464 | + | - | + | ⓸ |
| 9465 | + | - | + | ⓹ |
| 9466 | + | - | + | ⓺ |
| 9467 | + | - | + | ⓻ |
| 9468 | + | - | + | ⓼ |
| 9469 | + | - | + | ⓽ |
| 9470 | - | - | + | ⓾ |
| 9471 | + | - | + | ⓿ |
| 10102 | + | - | + | ❶ |
| 10103 | + | - | + | ❷ |
| 10104 | + | - | + | ❸ |
| 10105 | + | - | + | ❹ |
| 10106 | + | - | + | ❺ |
| 10107 | + | - | + | ❻ |
| 10108 | + | - | + | ❼ |
| 10109 | + | - | + | ❽ |
| 10110 | + | - | + | ❾ |
| 10111 | - | - | + | ❿ |
| 10112 | + | - | + | ➀ |
| 10113 | + | - | + | ➁ |
| 10114 | + | - | + | ➂ |
| 10115 | + | - | + | ➃ |
| 10116 | + | - | + | ➄ |
| 10117 | + | - | + | ➅ |
| 10118 | + | - | + | ➆ |
| 10119 | + | - | + | ➇ |
| 10120 | + | - | + | ➈ |
| 10121 | - | - | + | ➉ |
| 10122 | + | - | + | ➊ |
| 10123 | + | - | + | ➋ |
| 10124 | + | - | + | ➌ |
| 10125 | + | - | + | ➍ |
| 10126 | + | - | + | ➎ |
| 10127 | + | - | + | ➏ |
| 10128 | + | - | + | ➐ |
| 10129 | + | - | + | ➑ |
| 10130 | + | - | + | ➒ |
| 10131 | - | - | + | ➓ |
PS: I am sorry for the wrong format.
examples of isdigit
a = "123"
a.isdigit()
true
a = "1.234"
a.isdigit()
false
a ="2²"
a.isdigit()
b = "3₄"
b.isdigit()
The roman numerals, currency numerators and fractions
(usually written using unicode) are considered numeric
characters but not digits. The isdigit() returns False if
the string contains these characters
Roman Numerals : Ⅰ, Ⅱ ,Ⅺ
currency numerators : $,₹,€,£
fractions : ½,⅔,¼
c = "Ⅺ"
c.isdigit()
false
d = "₹"
d.isdigit()
false
e = "½"
e.isdigit()
false
some examples of isdecimal ()
a = "123"
a.isdecimal()
true
b = "3₄"
b.isdecimal()
c = "Ⅺ"
c.isdecimal()
false
d = "₹"
d.isdecimal()
false
e = "½"
e.isdecimal()
false
The superscript and subscripts are considered digit
characters but not decimals. If the string contains these
characters (usually written using unicode), isdecimal()
returns False.
Similarly, roman numerals, currency numerators and
fractions are considered numeric numbers (usually written
using unicode) but not decimals. The isdecimal() also
returns False in this case.
source link : https://www.programiz.com/python-programming/methods/string/isdecimal
https://www.programiz.com/python-programming/methods/string/isdigit
if i am wrong then please correct me
just a new learner
isdigit()
- 0123456789 only
- the value is safe to be parsed to an integer.
- used for validating text & file input data
- can be called from bytearray and bytes as well.
- not used for formatting output text
isdecimal()
- value should be "displayed as a number"
- eg: don’t hyphenate across a line break.
- not used for validating numerical input [ie int("₂") raises ValueError]
- can be used to inform "natural text sorting" algorithms.
- can be used for validating chemical formulas: "H₂O" and "H2O"