isnumeric()
http://pythoncentral.io/how-to-check-if-a-string-is-a-number-in-python-including-unicode/ Unicode dizeleri farklı numeral systems genişletilmiş destek.
Amerika ve Avrupa'dahaneden oluşan Hindu-Arabic numeral system kullanılır.
Hindu-Arap rakamları, Unicode tarafından da Avrupa rakamları olarak adlandırılır.
mevcut gibi diğer sayısal sistemler şunlardır:
- Romen rakamlarıyla
- Antik Yunan rakamları
- Tamil rakamları
- Japaneese rakamları
- Çinli rakamları
- Kore rakamları
sayı sistemleri hakkında
fazla bilgi burada bulunabilir: wikiwand.com/en/Numerals_in_Unicode#/Numerals_by_script
Unicode subscript
, superscript
ve fractions
da isnumeric()
işlevi ile geçerli rakamlarını kabul edilir.
Bir dizenin unicode olmayan bir sayı olup olmadığını kontrol etmek için aşağıdaki isnumeric() işlevini kullanabilirsiniz.
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()
Düzenleme: Bu cevaba 2'den fazla bağlantı eklemek için yeterli bir üne sahip bitmez bu yazıyı güncelleyeceğiz.
Dize 'a' de float değerleri içerebilir, bu yüzden isdigit kullanamıyorum .. – user1050619
u'1.5'.isnumeric() = False, isdigit'i kullanın veya kendi işlevinizi yazın. –