Wie konvertiert \xXY-codierte Zeichen in UTF-8 in Python?
Ich habe einen text, der Zeichen enthält, z.B. "\xaf", "\xbe", die, so wie ich es verstehe aus diese Frage, sind ASCII-codierte Zeichen.
Möchte ich umwandeln in Python, um Ihre UTF-8-äquivalente. Die üblichen string.encode("utf-8")
wirft UnicodeDecodeError
. Gibt es eine bessere Art und Weise, z.B. mit der codecs
standard-Bibliothek?
Probe 200 Zeichen hier.
Ihre Stichprobe umfasst keine
Ihre Beispieldaten ist gültiges UTF-8. Mit der "record separator" - und "unit separator" - Zeichen.
Nach
\xaf
oder ähnliches. Haben Sie keine Proben, die mit solchen Charakteren?Ihre Beispieldaten ist gültiges UTF-8. Mit der "record separator" - und "unit separator" - Zeichen.
Nach
enca
(linux.die.net/man/1/enca) ist es UTF-8 "umgeben von/, vermischt mit nicht-text-Daten".InformationsquelleAutor Jindřich Mynarz | 2011-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Datei ist bereits UTF-8-codierte Datei.
Und manuell ausfüllen der unbekannten Namen:
char U000a LINE FEED
char U001e INFORMATIONS-TRENNZEICHEN ZWEI
char U001f INFORMATIONEN SEPARATOR EINE
try
ing zu"string".decode()
für die gängigsten Codierungen und, wenn alles fehlgeschlagen ist, raten die Codierung mit derchardet
Bibliothek.InformationsquelleAutor tzot
.encode
ist für die Umwandlung der Unicode-string (unicode
im 2.x,str
im 3.x) ist ein byte-string (str
im 2.x,bytes
im 3.x).In der 2.x, es ist legal zu nennen
.encode
auf einestr
Objekt. Python implizit dekodiert die Zeichenfolge in Unicode erste:s.encode(e)
funktioniert, als ob Sie geschrieben hattes.decode(sys.getdefaultencoding()).encode(e)
.Das problem ist, dass das default-encoding "ascii" und dein string enthält nicht-ASCII-Zeichen. Sie können dies lösen, indem Sie explizit die Angabe der richtigen Kodierung.
enca
). Damit dieses Verfahren kann nicht angewendet werden für den gesamten text.Also die \xXY Zeichen sind in ISO-8859-1?
InformationsquelleAutor dan04
Es ist nicht ASCII (ASCII-codes gehen nur bis zu 127;
\xaf
175). Zuerst müssen Sie, um herauszufinden, die richtige Codierung zu decodieren, und dann re-encode in UTF-8.Könnten Sie eine tatsächliche Zeichenfolge Probe? Dann können wir wohl erraten Sie die aktuelle Codierung.
Die Probe sieht nicht aus wie ein verschlüsselter text zu mir, mehr wie ein proprietäres format.
Es sollte in das MARC-format (loc.gov/marc). Wenn ich versuchte zu erkennen, seine Kodierung mit
enca
bekam ich Antwort sagen, dass es meist UTF-8 durchsetzt mit nicht-text-Zeichen.Also es ist definitiv nicht ein-text-format/Kodierung. Dies ist nicht ein problem, das Sie lösen können mit einer korrekten Codierung; Sie müssen eine Bibliothek, die dies Lesen können "Datenbank". Etwas wie folgt vielleicht.
Ja, ich bin bereits über die
pymarc
Bibliothek zum Parsen der Datei. Das problem ist, dass es kann nicht analysiert werden, richtig, weil diese Zeichen (\xaf...). Ich versuche also, die Datei zu reparieren, vor der übergabe an den parser.InformationsquelleAutor Tim Pietzcker