isnumeric()
扩展了对Unicode 字符串中不同数字系统的支持。
在美洲和欧洲,使用由 0123456789 位组成的印度-阿拉伯数字系统。
印度教-阿拉伯数字也被 Unicode 称为欧洲数字。
还有其他可用的数字系统,例如:
- 罗马数字
- 古希腊数字
- 泰米尔语数字
- 日本数字
- 中文数字
- 韩国数字
有关数字系统的更多信息,请访问:wikiwand.com/en/Numerals_in_Unicode#/Numerals_by_script
Unicode subscript
,superscript
并且fractions
也被该isnumeric()
函数视为有效数字。
您可以使用下面的 isumeric() 函数来检查字符串是否为非 unicode 数字。
l = ['abc' + chr(255), 'abc', '123', '45a6', '78b', u"\u2155", '123.4', u'\u2161', u'\u2168']
def isnumeric(s):
'''Returns True for all non-unicode numbers'''
try:
s = s.decode('utf-8')
except:
return False
try:
float(s)
return True
except:
return False
for i in l:
print i, 'isnumeric:', isnumeric(i)
print '--------------------'
print u'\u2169', 'isnumeric', u'\u2169'.isnumeric()
print u'\u2165', 'isnumeric', u'\u2165'.isnumeric()
编辑:一旦我有足够的声誉来添加超过 2 个链接到这个答案,我就会更新这篇文章。