Ich versuche ein Python-Paket namens bidi zu verwenden. In einem Modul in diesem Paket (algorithm.py) gibt es einige Zeilen, die mir Fehler geben, obwohl es Teil des Pakets ist.
Hier sind die Zeilen:
# 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
und hier ist die Fehlermeldung:
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
Wie soll ich diesen Teil des Codes neu schreiben, damit er in Python3 funktioniert? Auch wenn jemand ein Bidi-Paket mit Python 3 verwendet hat, lassen Sie mich bitte wissen, ob er ähnliche Probleme gefunden hat oder nicht. Ich schätze Ihre Hilfe.
if isinstance(unicode_or_str, str)
sollte einfach funktionieren. Das Umbenennen des Variablennamens ist optional.unicode
mit ersetztstr
.Wenn das Skript weiterhin wie ich an Python2 und 3 funktioniert, kann dies jemandem helfen
und kann dann einfach zum Beispiel tun
quelle
six
Um ein Detail hinzuzufügen: Wenn Sie die Bibliothek zum Verwalten der Python 2/3-Kompatibilität verwenden, können Sie Folgendes tun:if six.PY3: unicode = str
anstelle vonsys.version_info
Dingen. Dies ist auch sehr hilfreich, um zu verhindern, dass Linterfehler im Zusammenhang mit Unicode in Python 3 undefiniert werden, ohne dass spezielle Ausnahmen für Linterregeln erforderlich sind.Sie können die sechs Bibliotheken verwenden, um sowohl Python 2 als auch 3 zu unterstützen:
quelle
Ich hoffe, Sie verwenden Python 3, Str sind standardmäßig Unicode. Ersetzen Sie daher die
Unicode
Funktion durch die String-Str
Funktion.quelle