Python 为什么不是';数字在工作吗?

Python 为什么不是';数字在工作吗?,python,python-3.x,Python,Python 3.x,我正在阅读一本非常简单的python3使用字符串操作指南,然后遇到了一个奇怪的错误: In [4]: # create string string = 'Let\'s test this.' # test to see if it is numeric string_isnumeric = string.isnumeric() Out [4]: AttributeError Tracebac

我正在阅读一本非常简单的python3使用字符串操作指南,然后遇到了一个奇怪的错误:

In [4]: # create string
        string = 'Let\'s 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'
[4]中的
:#创建字符串
string='让我们测试一下这个
#测试它是否为数字
string\u isnumeric=string.isnumeric()
Out[4]:AttributeError回溯(上次最近的调用)
在()
3.
4#测试是否为数字
---->5 string_isnumeric=string.isnumeric()
AttributeError:“str”对象没有属性“isnumeric”
问题是,据我所知,
str
有一个属性,
isnumeric
isnumeric()
只对Unicode字符串有效。要将字符串定义为Unicode,可以更改字符串定义,如下所示:

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

        isnum = s.isnumeric()
现在将存储False


注意:如果您导入了模块字符串,我还更改了您的变量名。

否,
str
对象没有
isnumeric
方法
isnumeric
仅适用于unicode对象。换言之:

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

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


如果使用Python3将字符串环绕str,如下所示

str('hello').isnumeric()


通过这种方式,它的行为符合预期

而不是在Python 2中,请将该字符串更改为unicode字符串。尝试改用
isdigit
。找到了答案:默认情况下,Py3中的文本是unicode。将其作为一个答案,并附上解释。接受它。问题解决了。
unicode('200').isnumeric() # True
unicode('unicorn121').isnumeric() # False