Saya mencoba menggunakan paket Python bernama bidi. Dalam sebuah modul dalam paket ini (algorithm.py) ada beberapa baris yang memberi saya kesalahan, meskipun itu adalah bagian dari paket.
Inilah garis-garisnya:
# 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
dan di sini adalah pesan kesalahan:
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
Bagaimana saya harus menulis ulang bagian kode ini agar berfungsi di Python3? Juga jika ada yang menggunakan paket bidi dengan Python 3 tolong beri tahu saya jika mereka menemukan masalah yang sama atau tidak. Saya menghargai bantuan Anda.
if isinstance(unicode_or_str, str)
seharusnya hanya bekerja. Mengganti nama nama variabel adalah opsional.unicode
digantistr
.Jika Anda perlu membuat skrip tetap bekerja pada python2 dan 3 seperti yang saya lakukan, ini dapat membantu seseorang
dan kemudian bisa lakukan misalnya
sumber
six
pustaka untuk mengelola kompatibilitas Python 2/3, Anda dapat membuatnya:if six.PY3: unicode = str
alih-alihsys.version_info
barang. Ini juga sangat membantu untuk mencegah kesalahan linter terkait unicode tidak terdefinisi dalam Python 3, tanpa memerlukan pengecualian aturan linter khusus.Anda bisa menggunakan enam pustaka untuk mendukung Python 2 dan 3:
sumber
Harap Anda menggunakan Python 3, Str secara unicode, jadi silakan Ganti
Unicode
fungsi denganStr
fungsi String .sumber