10

関数を使用して、文字列が数値かどうかを確認しようとしていますisnumericが、結果は期待どおりではありません。この関数は、Unicode 文字列の場合にのみ機能します。

>>> a=u'1'
>>> a.isnumeric()
True
>>> a='1'
>>> a.isnumeric()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'isnumeric'

isnumericUnicode の場合にのみ機能します。何か理由は?

4

4 に答える 4

15

名前が違うだけ。

'1'.isdigit() 真

于 2013-05-31T18:38:13.113 に答える
5

Python の文字列が数値かどうかを確認したいことがよくあります。これは、ユーザー入力、データベースからのデータの取得 (文字列を返す場合があります)、数値を含むファイルの読み取りなど、常に発生します。期待する数値の種類に応じて、いくつかの方法を使用できます。文字列を解析したり、正規表現を使用したり、単に数値にキャスト (変換) して何が起こるかを確認したりします。多くの場合、Unicode でエンコードされた非 ASCII 番号にも遭遇します。これらは数値である場合とそうでない場合があります。たとえば、๒ はタイ語で 2 です。ただし、© は単なる著作権記号であり、明らかに数字ではありません。

リンク: http://pythoncentral.io/how-to-check-if-a-string-is-a-number-in-python-include-unicode/

于 2013-05-31T18:42:07.583 に答える
4

Python documentationによると、はisnumericunicode オブジェクトに対してのみ存在します:

次のメソッドは、Unicode オブジェクトにのみ存在します。

unicode.isnumeric()

S に数字しかない場合は True、それ以外の場合は False を返します。数字には、数字と、Unicode 数値プロパティを持つすべての文字 (U+2155、VULGAR FRACTION ONE FIFTH など) が含まれます。

于 2013-05-31T18:39:36.137 に答える