Wie in:
u'Hello'
Ich vermute, dass es "Unicode" anzeigt, ist es richtig?
Wenn ja, seit wann ist es verfügbar?
Sie haben Recht, siehe 3.1.3. Unicode-Zeichenfolgen .
Es ist die Syntax seit Python 2.0.
Python 3 hat sie überflüssig gemacht, da der Standard-Zeichenfolgentyp Unicode ist. Die Versionen 3.0 bis 3.2 haben sie entfernt, aber sie wurden in 3.3+ neu hinzugefügt, um die Kompatibilität mit Python 2 zu gewährleisten und den Übergang von 2 zu 3 zu unterstützen.
ur"string"
) ist in Python 2 gültig, in Python 3 jedoch leider ungültig.Das u in
u'Some String'
bedeutet, dass Ihre Zeichenfolge eine Unicode-Zeichenfolge ist .F: Ich habe es schrecklich eilig und bin über die Google-Suche hier gelandet. Ich versuche, diese Daten in eine Datei zu schreiben. Ich erhalte eine Fehlermeldung und benötige in dieser Sekunde die einfachste, wahrscheinlich fehlerhafte Lösung.
A: Sie sollten wirklich Joels absolutes Minimum lesen. Jeder Softwareentwickler muss unbedingt einen positiven Aufsatz über Unicode- und Zeichensätze (keine Ausreden!) Über Zeichensätze wissen .
F: sry kein Zeitcode pls
Eine Geldbuße. versuchen Sie es
str('Some String')
oder'Some String'.encode('ascii', 'ignore')
. Aber Sie sollten wirklich einige der Antworten und Diskussionen zum Konvertieren einer Unicode-Zeichenfolge und dieser hervorragenden, hervorragenden Einführung in die Zeichenkodierung lesen .quelle
Ja.
Python 2.x.
In Python 3.x verwenden die Zeichenfolgen standardmäßig Unicode, und das
u
Präfix ist nicht erforderlich . Hinweis: In Python 3.0-3.2 ist das u ein Syntaxfehler. In Python 3.3+ ist es wieder legal, das Schreiben von 2/3 kompatiblen Apps zu vereinfachen.quelle
u
Präfix zu verwenden.six.text_type()
überall für die (hoffentlich winzige) Anzahl von Personen verwenden möchten, die noch 3 verwenden. [012] - Zumindest die Informationen sind da, so dass Sie wählen können.Ich bin hierher gekommen, weil ich ein Funny-Char-Syndrom hatte
requests
. Ich dachteresponse.text
, ich würde eine richtig dekodierte Zeichenfolge erhalten, aber in der Ausgabe fand ich lustige Doppelzeichen, wo deutsche Umlaute hätten sein sollen.Es stellte sich heraus, dass
response.encoding
es irgendwie leer war und daherresponse
nicht wusste, wie man den Inhalt richtig dekodiert und ihn einfach als ASCII behandelte (denke ich).Meine Lösung bestand darin, die Rohbytes mit 'response.content' abzurufen und manuell darauf anzuwenden
decode('utf_8')
. Das Ergebnis war schöne Umlaute.Das richtig dekodiert
gegen die falsch entschlüsselt
quelle
Alle für Menschen bestimmten Zeichenfolgen sollten u "" verwenden.
Ich habe festgestellt, dass die folgende Denkweise beim Umgang mit Python-Zeichenfolgen sehr hilfreich ist: Alle Python-Manifest-Zeichenfolgen sollten die
u""
Syntax verwenden. Die""
Syntax gilt nur für Byte-Arrays.Lassen Sie mich das erklären, bevor das Bashing beginnt. Die meisten Python-Programme beginnen mit der Verwendung
""
von Zeichenfolgen. Aber dann müssen sie die Dokumentation aus dem Internet unterstützen, damit sie anfangen zu verwenden,"".decode
und plötzlich bekommen sie überall Ausnahmen über das Dekodieren von diesem und jenem - alles wegen der Verwendung von""
für Zeichenfolgen. In diesem Fall verhält sich Unicode wie ein Virus und verursacht Chaos.Wenn Sie jedoch meiner Regel folgen, haben Sie diese Infektion nicht (weil Sie bereits infiziert sind).
quelle
bash -c "echo Shouldn\\'t you use b\\\"...\\\" for byte arrays?"
u""
.Es ist Unicode.
Setzen Sie einfach die Variable dazwischen
str()
, und es wird gut funktionieren.Falls Sie jedoch zwei Listen wie die folgenden haben:
Wenn Sie dies überprüfen
set(a)==set(b)
, wird es als "Falsch" angezeigt. Wenn Sie jedoch Folgendes tun:Jetzt ist das Ergebnis wahr.
quelle
str()
oderu'€'.encode()
) codieren, ohne eine Codierung zu übergeben. Wenn die Zeichenfolge Nicht-ASCII enthält, erhält der Benutzer eine UnicodeEncodeException.b = str(b)
gibt nur die Zeichenfolgerepr()
der Liste, dhb = "[u'co32', u'co36']"
. Dannset(a)==set(b) = False