Python字符串isdecimal()

时间:2020-02-23 14:43:27  来源:igfitidea点击:

如果字符串中的所有字符均为十进制字符,则Python String isdecimal()函数将返回True,否则为False。
如果字符串为空,则此函数返回False。

Python字符串isdecimal()

如果一个字符可用于以10为底的数字,则该字符被视为十进制字符。
例如,٠(U + 0660,ARABIC-INDIC DIGIT ZERO)和? (U + 1D7DC,数学双打击数字四)也被视为十进制字符。

让我们看一下isdecimal()函数的一些示例。

s = '100'

print(s.isdecimal())

输出:True,因为字符串中的所有字符都是小数。

s = '0xF'
print(s.isdecimal())

输出:False,因为字符串不是十进制,并且不能用于以10为底的数字。

s = '10.55'
print(s.isdecimal())

输出:False,因为点字符不是十进制字符。

s = ''
print(s.isdecimal())

输出:False,因为字符串为空。

s = '1٠2?'  # U+0660, U+1D7DC
print(s.isdecimal())
print(int(s))

输出:

True
1024

在Python中打印所有十进制字符

我们可以使用unicode模块来检查一个字符是否为十进制。
这是打印所有十进制Unicode字符的程序。

import unicodedata

count = 0
for codepoint in range(2 ** 16):
  ch = chr(codepoint)
  if ch.isdecimal():
      print(u'{:04x}: {} ({})'.format(codepoint, ch, unicodedata.name(ch, 'UNNAMED')))
      count = count + 1
print(f'Total Number of Decimal Unicode Characters = {count}')

输出:

...
ff15: 5 (FULLWIDTH DIGIT FIVE)
ff16: 6 (FULLWIDTH DIGIT SIX)
ff17: 7 (FULLWIDTH DIGIT SEVEN)
ff18: 8 (FULLWIDTH DIGIT EIGHT)
ff19: 9 (FULLWIDTH DIGIT NINE)
Total Number of Decimal Unicode Characters = 370