为什么没有数字工作?

时间:2014-04-20 14:59:39

标签: 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                            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 DOES 有一个属性isnumeric

4 个答案:

答案 0 :(得分:13)

不,str个对象没有isnumeric方法。 isnumeric仅适用于unicode对象。换句话说:

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

答案 1 :(得分:3)

isnumeric()仅适用于Unicode字符串。要将字符串定义为Unicode,您可以更改字符串定义,如下所示:

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

        isnum = s.isnumeric()

现在将存储False。

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

答案 2 :(得分:2)

One Liners:

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

或者

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

答案 3 :(得分:0)

如果使用python 3将字符串环绕在 str 周围,如下所示

  

str('hello')。isnumeric()

通过这种方式表现出预期的效果