Was ist der u-Präfix in einem Python-string?
Wie in:
u'Hello'
Meine Vermutung ist, dass es zeigt, "Unicode", ist das korrekt?
Wenn ja, seit Wann ist es verfügbar?
InformationsquelleAutor OscarRyz | 2010-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht, siehe 3.1.3. Unicode-Zeichenfolgen.
Es wurde die syntax seit Python 2.0.
Python 3 machte Sie überflüssig, da die Standard-Unicode-string-Typ ist. Mit den Versionen 3.0 bis 3.2 entfernt, aber Sie waren re-Hinzugefügt in 3.3+ für Kompatibilität mit Python 2 zum Adjutanten der 2-bis 3-übergang.
InformationsquelleAutor Stefan Kendall
U in
u'Some String'
bedeutet, dass Ihr string ist ein Unicode-string.Q: ich bin in einer schrecklichen, schrecklich beeilen Sie sich und dann landete ich hier aus der Google-Suche. Ich bin versucht, zu schreiben diese Daten in eine Datei, ich erhalte eine Fehlermeldung, und ich brauche die Toten einfachste, wohl fehlerhaft, die Lösung dieser zweiten.
A: Sie sollten wirklich Lesen Joel Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) essay über Zeichensätze.
Q: sry keine Zeit code pls
A: In Ordnung. versuchen
str('Some String')
oder'Some String'.encode('ascii', 'ignore')
. Aber Sie sollten wirklich Lesen Sie einige der Antworten und Diskussion über Konvertieren Unicode-string und diese exzellente, exzellente, primer auf die Zeichenkodierung.Dieser behandelt die u" als etwas "loswerden". Das sagt mir, dass Sie gar nicht verstehen, was es ist. Im Allgemeinen werden Sie wollen nicht nur "loswerden", und der richtige Weg, um ein byte-string aus einem Unicode-string, hängt davon ab, was die Zeichenfolge enthält und in welchem Kontext.
völlig einig - dies war eine nebensächliche Antwort, gemeint war Zunge in der Wange, aber es summierte sich eine Art von schrecklichen Anzahl der upvotes. editiert, um zu versuchen, zu Steuern, Leute, die in die richtige Richtung.
InformationsquelleAutor Andrew
Ja.
Python-2.x.
In Python 3.x die strings standardmäßig im Unicode-Format und es gibt keine Notwendigkeit für die
u
Präfix. Hinweis: in Python 3.0-3.2, u ist ein syntax Fehler. In Python 3.3+ es ist wieder legal zu machen, es einfacher zu schreiben 2/3 kompatiblen apps.Es ist auch ein Syntax-Fehler in Python 3 zu verwenden, die
u
Präfix.Nur in 3.0-3.2; 3.3+ es legal ist (und sinnlos), um es einfacher zu schreiben 2.6+/3.3+ single-codebase Bibliotheken und apps.
Gut, dieser Kommentar wird jetzt vier-und-ein-halb Jahre alt 🙂
Sicher, aber genau so dein Kommentar war eine nützliche Ergänzung für jeden, finden Sie diese nützliche Antwort durch suchen im Jahr 2010, ich denke, es ist nützlich zu erwähnen, die änderung in 3.3 zu jedermann, es zu finden, im Jahr 2014. Es könnte wohl besser sein, Bearbeiten Sie die Antwort, aber ich denke, es ist ein kleiner Punkt, dass die meisten Menschen nicht in laufen (es sei denn, weil Sie immer noch mit 3.0-3.2, 2014, "keine Notwendigkeit für das Präfix" ist alles, was Sie wissen müssen).
InformationsquelleAutor kennytm
Sollte Folgendes helfen:
http://docs.python.org/library/functions.html#unicode
http://www.amk.ca/python/howto/unicode (springe zu "Python-Unicode-Unterstützung", wenn Sie bereits vertraut mit den Unicode-Prinzipien)
InformationsquelleAutor Brian Luft
Alle Saiten bedeutete für den Menschen sollte die Verwendung von u"".
Fand ich, dass die folgende Denkweise hilft viel, wenn der Umgang mit Python-strings: Alle Python manifestieren sollten strings verwenden Sie die
u""
syntax. Die""
syntax ist für byte-arrays, nur.Bevor das bashing beginnt, lassen Sie mich erklären. Die meisten Python-Programme zu starten mit
""
für Streicher. Aber dann müssen Sie support-Dokumentation aus dem Internet, so beginnen Sie mit"".decode
und alle von einer plötzlichen, Sie werden immer Ausnahmen überall zu Dekodieren dies und das - alles, weil der Einsatz von""
für Streicher. In diesem Fall, Unicode handeln, wie ein virus und wird Unheil anrichten.Aber, wenn Sie Folgen, meinen Sie in der Regel nicht diese Infektion haben (weil Sie bereits infiziert sein).
bash -c "echo Shouldn\\'t you use b\\\"...\\\" for byte arrays?"
Klingt gut! Einfach gedacht, zu sagen, alle Saiten gedacht für Menschen verwenden sollte
u""
.Wenn Sie wollen religiös Verwendung der Unicode-überall—, die für viele Anwendungen (aber nicht alle), ist eine gute Sache—Sie fast sicher, dass Python 3.x, nicht 2.x. Das kann nicht wahr gewesen sein, im Jahr 2010, als dies geschrieben wurde, aber im Jahr 2014, die meisten Bibliotheken oder Plattformen, die verhindern, dass Sie ein Upgrade auf 3.x wird auch verhindern, dass Sie mit Unicode einwandfrei...
InformationsquelleAutor Frank Krueger
Ist es Unicode.
Setzen Sie einfach die variable zwischen
str()
, und es funktioniert gut.Aber im Falle Sie haben zwei Listen, wie die folgenden:
Wenn Sie das Kontrollkästchen
set(a)==set(b)
wird es kommen, wie Falsch, aber wenn du gehen Sie wie folgt vor:Nun, das Ergebnis True.
str()
oderu'€'.encode()
), ohne eine Codierung. Wenn der string enthält nicht-ASCII-Zeichen erhält der Nutzer eine UnicodeEncodeException.Weiter, dein code funktioniert nicht.
b = str(b)
gibt nur die stringrepr()
von der Liste, d.h.b = "[u'co32', u'co36']"
. Dannset(a)==set(b) = False
InformationsquelleAutor user3251882
Ich bin hierher gekommen, weil ich hatte lustiges-char-Syndrom auf meine
requests
Ausgabe. Ich dachteresponse.text
würde mir ein richtig dekodiert string, aber in der Ausgabe, die ich lustig fand double-chars, wo Deutsche Umlaute gewesen sein sollte.Stellt sich heraus
response.encoding
war irgendwie leer und so habe die Antwort nicht wissen, wie Sie richtig zu entschlüsseln, den Inhalt und nur behandelt es als ASCII (denke ich).Meine Lösung war, die roh-bytes mit 'Antwort.Inhalt' und manuell anwenden
decode('utf_8')
. Das Ergebnis war schöne Umlaute.Korrekt dekodiert
vs. falsch decodiert
InformationsquelleAutor Chris