str - unicode python 3
NameError: nombre global ''unicode'' no está definido-en Python 3 (3)
Espero que estés usando Python 3, Str es unicode por defecto, así que por favor reemplaza la función Unicode
con la función String Str
.
if isinstance(unicode_or_str, str): ##Replaces with str
text = unicode_or_str
decoded = False
Estoy tratando de usar un paquete de Python llamado bidi. En un módulo de este paquete (algorithm.py) hay algunas líneas que me dan error, aunque es parte del paquete.
Aquí están las líneas:
# utf-8 ? we need unicode
if isinstance(unicode_or_str, unicode):
text = unicode_or_str
decoded = False
else:
text = unicode_or_str.decode(encoding)
decoded = True
y aquí está el mensaje de error:
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
bidi_text = get_display(reshaped_text)
File "C:/Python33/lib/site-packages/python_bidi-0.3.4-py3.3.egg/bidi/algorithm.py", line 602, in get_display
if isinstance(unicode_or_str, unicode):
NameError: global name ''unicode'' is not defined
¿Cómo debería volver a escribir esta parte del código para que funcione en Python3? Además, si alguien ha usado el paquete bidi con Python 3, avíseme si han encontrado problemas similares o no. Aprecio tu ayuda.
Puede usar las six bibliotecas para admitir Python 2 y 3:
import six
if isinstance(value, six.string_types):
handle_string(value)
Python 3 renombró el tipo unicode
a str
, el antiguo tipo str
ha sido reemplazado por bytes
.
if isinstance(unicode_or_str, str):
text = unicode_or_str
decoded = False
else:
text = unicode_or_str.decode(encoding)
decoded = True
Es posible que desee leer el HOWTO de Python 3 para obtener más detalles. También está Porting to Python 3 de Lennart Regebro : una guía en profundidad , gratuita en línea.
Por último, podría intentar usar la herramienta 2to3
para ver cómo se traduce el código.