Ich versuche, Namen aus einem Datensatz zu analysieren, der unterschiedliche (gemischte) Codierungen innerhalb des Datensatzes verwendet. Es enthält Ortsnamen, neben vielen anderen Geodaten. Nach dem Ausführen des Skripts erhalte ich eine Liste von Ortsnamen, die mit Geo-Standorten übereinstimmen, d. H. [u'BR', u'BR-ES', u'BRA', u'Brasil', u'Brazil', u'ES', u'Espirito Santo', u'Esp\xedrito Santo', u'Federative Republic of Brazil', u'Guarapari', u'Rep\xfablica Federativa do Brasil', u'gpxupload.py']
. Soweit alles gut. Aber manchmal gibt die Datenmenge führe ich wie u'Taubat\u0102\u0160'
, die in der analyzation als TaubatĂŠ
behandelt wird anstelle des richtigen Wertes Taubaté
, das vorherige Beispiel erzeugt Espírito Santo
und Republic Federative do Brasil
Die Analyse von Datensätzen mit Unicode-Zeichen mit unterschiedlichen Codierungen führt zu seltsamen Ergebnissen
Gibt es eine Möglichkeit \u0102\u0160
zu erfassen und wandelt sie in \xe9
ohne um individuelle .replace()
Regeln für jeden Buchstaben zu erstellen?
Ich habe versucht, Ihr Beispiel, aber es scheint, wie es nicht funktioniert, da der Eingang sieht aus wie es von gemischter Kodierung: 'Traceback (letzter Anruf zuletzt): Datei" ./gpxtest.py ", Zeile 619, in get_relation Ergebnis.encode zurücksenden ('iso-8859-2'). Decode ('utf8') Datei"/System /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/iso8859_2.py ", Zeile 12, in encode Rückgabecodecs.charmap_encode (Eingabe, Fehler, Codierungstabelle) UnicodeEncodeError: 'Charmap' Codec Zeichen in Position 830-837 können nicht codiert werden: Zeichenkodierung auf ' –
Wenn Sie Codierungen gemischt haben und nicht wissen, was sie sind, haben Sie ein größeres Problem. –
Ich probiere gerade eine 'clean (string)' -Funktion aus, die 'string.encode ('encoding') .decode ('utf8')' gegen verschiedene Kodierungen versucht. Momentan scheint es zu funktionieren, obwohl es einige Stunden dauern wird. –