isnumeric()
ha esteso il supporto per diversi numeral systems in stringhe Unicode.
Nelle Americhe e in Europa viene utilizzato lo Hindu-Arabic numeral system composto da cifre.
I numeri indù-arabi sono anche chiamati cifre europee da Unicode.
L'sono altri sistemi di numerazione disponibili quali:
- numeri romani
- numeri greco antico
- numeri Tamil
- numeri Japaneese
- numeri Chineese
- numeri coreano
Ulteriori informazioni sui sistemi numerali possono essere trovate qui: wikiwand.com/en/Numerals_in_Unicode#/Numerals_by_script
Unicode subscript
, superscript
e fractions
sono anche considerati numeri validi per la funzione isnumeric()
.
È possibile utilizzare la funzione IsNumeric() qui sotto per controllare se una stringa è un numero non 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()
Edit: io aggiornare questo post non appena ho abbastanza reputazione di aggiungere più di 2 link a questa risposta.
fonte
2015-09-08 11:18:33
La stringa 'a' può contenere anche valori float, quindi non è possibile utilizzare isdigit .. – user1050619
u'1.5'.isnumeric() = False, utilizzare isdigit o scrivere la propria funzione. –