Ich habe das benutzt:
u = unicode(text, 'utf-8')
Aber es wird ein Fehler mit Python 3 angezeigt (oder ... vielleicht habe ich einfach vergessen, etwas einzuschließen):
NameError: global name 'unicode' is not defined
Danke dir.
Ich habe das benutzt:
u = unicode(text, 'utf-8')
Aber es wird ein Fehler mit Python 3 angezeigt (oder ... vielleicht habe ich einfach vergessen, etwas einzuschließen):
NameError: global name 'unicode' is not defined
Danke dir.
Antworten:
Literalzeichenfolgen sind in Python3 standardmäßig Unicode.
Angenommen, dies
text
ist einbytes
Objekt, verwenden Sie einfachtext.decode('utf-8')
unicode
von Python2 entsprichtstr
Python3, sodass Sie auch schreiben können:wenn Sie es vorziehen.
quelle
str
ist a Unicode, dh. es wird „decodiert“ , so macht es keinen Sinn rufendecode
auf siestr(text, 'utf-8')
Text eine binäre Zeichenfolge sein. zBstr(b'this is a binary', 'utf-8')
Was in Python neu 3.0 sagt:
Wenn Sie sicherstellen möchten, dass Sie utf-8 ausgeben, finden Sie hier ein Beispiel auf dieser Seite zu Unicode in 3.0 :
quelle
Um dieses Problem zu umgehen, habe ich Folgendes verwendet:
quelle
try: unicode = str; except: pass
.unicode = str
da es weder in 2 noch in 3 scheitern wirdfrom six import u as unicode
was ich einfach vorziehen würde, weil esunicode = str
Auf diese Weise habe ich mein Problem gelöst, Zeichen wie \ uFE0F, \ u000A usw. zu konvertieren. Und auch Emojis, die mit 16 Bytes codiert sind.
quelle
In einem Python 2-Programm, das ich viele Jahre lang verwendet habe, gab es diese Zeile:
Dies funktionierte in Python 3 nicht.
Es stellte sich jedoch heraus, dass das Programm funktioniert mit:
Ich erinnere mich nicht, warum ich dort überhaupt Unicode gesetzt habe, aber ich denke, das lag daran, dass der Name schwedische Buchstaben åäöÅÄÖ enthalten kann. Aber auch sie arbeiten ohne "Unicode".
quelle
der einfachste Weg in Python 3.x.
quelle