isnumeric()
は、Unicode文字列に異なるnumeral systemsのサポートを拡張しました。
アメリカおよびヨーロッパでは数字で構成されるHindu-Arabic numeral systemが使用されます。
ヒンドゥーアラビア数字は、Unicodeによってヨーロッパ数字とも呼ばれます。
ザのような利用可能な他の符号系である:
- ローマ数字
- 古代ギリシアの数字
- タミル数字
- Japaneese数字
- Chineese数字
- 韓国数字
数字システムについて
詳しい情報はここで見つけることができます:wikiwand.com/en/Numerals_in_Unicode#/Numerals_by_script
ユニコードsubscript
、superscript
とfractions
もisnumeric()
機能によって有効な数字と考えられています。
以下のisnumeric()関数を使用して、文字列が非ユニコード番号であるかどうかを確認できます。
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'にもfloat値を含めることができるので、isdigitは使用できません.. – user1050619
u'1.5'.isnumeric()= False、isdigitを使用するか、独自の関数を記述してください。 –