Asked By – TJ1
I am trying to use a Python package called bidi. In a module in this package (algorithm.py) there are some lines that give me error, although it is part of the package.
Here are the lines:
# 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
and here is the error message:
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
How should I re-write this part of the code so it works in Python3?
Also if anyone have used bidi package with Python 3 please let me know if they have found similar problems or not. I appreciate your help.
Now we will see solution for issue: NameError: global name ‘unicode’ is not defined – in Python 3
Python 3 renamed the
unicode type to
str, the old
str type has been replaced by
if isinstance(unicode_or_str, str): text = unicode_or_str decoded = False else: text = unicode_or_str.decode(encoding) decoded = True
You may want to read the Python 3 porting HOWTO for more such details. There is also Lennart Regebro’s Porting to Python 3: An in-depth guide, free online.
Last but not least, you could just try to use the
2to3 tool to see how that translates the code for you.
This question is answered By – Martijn Pieters
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0