supported str run not from escape bytes python unicode python-3.x nameerror bidi

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.