Почему не работает isnumeric?

Я использовал очень простой справочник python3 для использования строковых операций, а затем я столкнулся с этой странной ошибкой:

In [4]: # create string
        string = 'Let\ test this.'

        # test to see if it is numeric
        string_isnumeric = string.isnumeric()

Out [4]: AttributeError                            Traceback (most recent call last)
         <ipython-input-4-859c9cefa0f0> in <module>()
                    3 
                    4 # test to see if it is numeric
              ----> 5 string_isnumeric = string.isnumeric()

         AttributeError: 'str' object has no attribute 'isnumeric'

Проблема заключается в том, что, насколько я могу судить, str ДАЕТ атрибут isnumeric.

Ответ 1

Нет, str объекты не имеют метода isnumeric. isnumeric доступен только для объектов Unicode. Другими словами:

>>> d = unicode('some string', 'utf-8')
>>> d.isnumeric()
False
>>> d = unicode('42', 'utf-8')
>>> d.isnumeric()
True

Ответ 2

isnumeric() работает только с строками Unicode. Чтобы определить строку как Unicode, вы можете изменить свои определения строк следующим образом:

In [4]:
        s = u'This is my string'

        isnum = s.isnumeric()

Теперь будет сохранено значение False.

Примечание. Я также изменил ваше имя переменной, если вы импортировали строку модуля.

Ответ 3

Один вкладыш:

unicode('200', 'utf-8').isnumeric() # True
unicode('unicorn121', 'utf-8').isnumeric() # False

или

unicode('200').isnumeric() # True
unicode('unicorn121').isnumeric() # False

Ответ 4

если используется строка переноса Python 3 вокруг str, как показано ниже

str('hello').isnumeric()

Таким образом, он ведет себя как ожидалось