¿Por qué no es numérico el trabajo?

Estaba revisando una guía muy simple de python3 para usar operaciones de cadenas y luego me encontré con este error extraño:

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)  in () 3 4 # test to see if it is numeric ----> 5 string_isnumeric = string.isnumeric() AttributeError: 'str' object has no attribute 'isnumeric' 

El problema es que, por lo que puedo decir, str tiene un atributo, es isnumeric .

No, los objetos str no tienen un método isnumeric . isnumeric solo está disponible para objetos Unicode. En otras palabras:

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

isnumeric() solo funciona en cadenas Unicode. Para definir una cadena como Unicode, puede cambiar sus definiciones de cadena de la siguiente manera:

 In [4]: s = u'This is my string' isnum = s.isnumeric() 

Esto ahora almacenará Falso.

Nota: También cambié el nombre de su variable en caso de que importara la cadena del módulo.

Uno Liners:

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

O

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