str.isdigit()
にのみtrueを返します。 .
は数字ではなく句読点です。 Pythonの3 str.isdigit()
documentationから
:
正式には、数字のみstr
オブジェクト用のPython 2のプロパティ値Numeric_Type =桁またはNumeric_Type =進
を(持つ文字でありますASCII桁(0
〜9
)が考慮されますが、unicode
オブジェクトの場合は同じ定義が適用されます)。
official Numeric Property definitions specificationを参照してください。その説明に一致する708 Unicode codepointsがあります。一般的なUnicodeのカテゴリにこれを簡素化
、ユニコードの数値のタイプはN
で始まるカテゴリを持っていますが、.
ない:ここ句読点ため
>>> import unicodedata
>>> unicodedata.category(u'.')
'Po'
P
スタンド、他ためo
が。 だから、添字ゼロは限りfloat()
に関しては、実際に0ではありません
>>> unicodedata.name(u'\u2080')
'SUBSCRIPT ZERO'
>>> unicodedata.category(u'\u2080')
'No'
>>> unicodedata.digit(u'\u2080')
0
>>> u'\u2080'.isdigit()
True
>>> float(u'\u2080')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'decimal' codec can't encode character u'\u2080' in position 0: invalid decimal Unicode string
、それ:
その逆、数字のみを含む文字列は、どちらか常にフロートや数に変換されませんの数字です。
あなたは文字列が有効な浮動小数点数であれば、テストfloat
を使用してValueError
をキャッチしたい場合: `.`は数字ではありませんので
def is_float(string):
try:
float(string)
return True
except ValueError:
return False
。 'isdigit()'は** **数字のみを含む文字列に対してtrueを返します。 –
これは、いずれかの点が真であることはできません。 –
でも "0.0"は浮動小数点なので、私にとってはそれも数字か違いは違いますか? –