isnumeric()
已擴展爲Unicode字符串不同numeral systems支持。在美洲和歐洲使用Hindu-Arabic numeral system,其由數字組成。
印度 - 阿拉伯數字也被Unicode統稱爲歐洲數字。
的其他數字系統,可作爲:
- 羅馬數字
- 古希臘數字
- 泰米爾數字
- Japaneese數字
- ,葡萄牙語數字
- 韓國數字
有關數字系統的更多信息可以在這裏找到:wikiwand.com/en/Numerals_in_Unicode#/Numerals_by_script
的Unicode subscript
,superscript
和fractions
也被認爲是由isnumeric()
功能有效數字。
您可以使用下面的isnumeric()函數來檢查字符串是否爲非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個鏈接添加到這個答案,我會盡快更新這個帖子。
字符串'a'也可以包含浮點值,所以我不能使用isdigit .. – user1050619
u'1.5'.isnumeric()= False,使用isdigit或編寫自己的函數。 –