python-3.x 字符串.isdecimal()和字符串.isdigit()差异示例

gg0vcinb  于 2023-02-26  发布在  Python
关注(0)|答案(6)|浏览(118)

在阅读python文档时,我接触到了.isdecimal()和.isdigit()字符串函数,我没有发现文献中对它们的区别有太清楚的说明,有人能给我提供这两个函数区别的代码示例吗?
类似行为:

>>> 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
8tntrjer

8tntrjer1#

有 * 一些 * 差异,但有些罕见 *。它主要出现各种unicode字符,如2

>>> c = '\u00B2'
>>> c.isdecimal()
False
>>> c.isdigit()
True

您还可以使用isnumeric方法进一步深入细致地区分unicode:

>>> c = '\u00BD' # ½
>>> c.isdecimal()
False
>>> c.isdigit()
False
>>> c.isnumeric()
True
  • 至少,我从来没有遇到过需要区分包含不同类型的异常情况的字符串的生产代码,但肯定在某些地方存在用例。
xfyts7mz

xfyts7mz2#

让我们看一些示例:

str.isdecimal()(仅限十进制数字)

34是十进制数吗?--〉是的

print("34".isdecimal())  #True

上标2是十进制数吗?--〉否

print("\u00B2")
print("\u00B2".isdecimal())  #False

字符串isdigit()(小数、下标、上标)

34是一个数字吗?--〉是的

print("34".isdigit()) #True

上标2是数字吗?--〉是

print("\u00B2")
print("\u00B2".isdigit()) #True

str.isnumeric()(小数、下标、上标、普通分数、罗马数字、货币分子)

34是数字吗?--〉是

print("34".isnumeric()) #True

上标2是数字吗?--〉是

print("\u00B2")
print("\u00B2".isnumeric()) #True

普通分数四分之一是数字吗?--〉是

print("\u00BC")
print("\u00BC".isnumeric()) #True
92dk7w1h

92dk7w1h3#

如果你有疑问,我的建议--去编码,去看结果,去得出结论。

一个代码

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
     ...:         )
     ...:     )
     ...:

查看结果

-------------------------------------
|    №   | 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 |    +    |     -     | ➒

得出结论

如您所见,函数 str.isdecimal()str.isdigit() 之间的主要区别在于:函数 str.isdecimal() 仅对0到9之间的数字返回True,同时函数 str.isdigit() 对某些其他Unicode支持的字符返回True。

pdsfdshx

pdsfdshx4#

完成PADYMKO的答案后,我们可以添加其他感兴趣的函数并扩展代码
编号

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
        )
    )

结果是

-------------------------------------------------
|    №   | 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:很抱歉格式不对。

ru9i0ody

ru9i0ody5#

等位数()

  • 仅限0123456789
  • 该值被安全地解析为整数。
  • 用于验证文本和文件输入数据
  • 也可以从bytearray和bytes调用。
  • 不用于格式化输出文本

十进制()

  • 值应"显示为数字"
  • 不要跨换行符连字符。
  • 不用于验证数字输入[ie int("")引发ValueError]
  • 可用于通知"自然文本排序"算法。
  • 可用于验证化学式:"H O"和"H2O"
toe95027

toe950276#

enter image description here
isdigit a ="123"的示例
a. isdigit()

a ="1.234"
a. isdigit()
假的
a ="2平方"
a. isdigit()
b ="3"
b. isdigit()
罗马数字、货币分子和分数(通常使用unicode编写)被认为是数字字符,而不是数字。如果字符串包含这些字符,isdigit()返回False
罗马数字:Ⅰ、Ⅱ、Ⅺ货币分子:$,,€,£分数:1/2,2/4
c ="十一"
c.是数字()
假的
d ="卢比"
d. isdigit()
假的
e ="½"
例如isdigit()
假的
isdecimal()的一些示例
a ="123"
a.十进制()
真b ="3"
b.十进制()
c ="十一"
c.十进制()
错误d =""
d.十进制()
错误e ="½"
即十进制()
假的
上标和下标被视为数字字符,但不被视为小数。如果字符串包含这些字符(通常使用unicode编写),isdecimal()将返回False。同样,罗马数字、货币分子和分数被视为数字(通常使用unicode编写),但不被视为小数。在这种情况下,isdecimal()也将返回False。
源链接:https://www.programiz.com/python-programming/methods/string/isdecimalhttps://www.programiz.com/python-programming/methods/string/isdigit
如果我错了,请纠正我只是一个新的学习者

相关问题