Wie konvertiert man Unicode-Akzentzeichen in reine Ascii ohne Akzente?

7

Ich versuche, Inhalte von einer Wörterbuchseite wie Ссылка

herunterzuladen

Das Problem, das ich habe, ist, dass der ursprüngliche Absatz all diese verzerrten Linien und umgekehrten Buchstaben hat, und so, wenn ich die lokalen Dateien lese, lande ich mit diesen komischen Escape-Zeichen wie \ x85, \ xa7, \ x8d usw.

Meine Frage ist, gibt es eine Möglichkeit, all diese Escape-Zeichen in ihre jeweiligen UTF-8-Zeichen zu konvertieren, zB wenn es ein "A" gibt, wie konvertiere ich das in einen Standard "a"?

Python-Aufrufcode:

%Vor%

Ich benutze wget-1.11.4-1 auf einem Windows 7-System (töte mich nicht Linux-Leute, es war eine Client-Anforderung), und die wget-Exe wird mit einer Python 2.6-Skriptdatei abgefeuert.

    
user1747683 02.01.2013, 07:28
quelle

3 Antworten

35
  

Wie konvertiere ich all diese Escape-Zeichen in ihre jeweiligen Zeichen, wenn es einen Unicode gibt à , wie konvertiere ich das in ein Standard a ?

Angenommen, Sie haben Ihren Unicode in eine Variable namens my_unicode ... normalizing à in ein is so simple ... geladen.

%Vor%

Explizites Beispiel ...

%Vor%

Funktionsweise
unicodedata.normalize('NFD', "insert-unicode-text-here") führt eine Kanonische Zerlegung (NFD) durch der Unicode-Text; dann verwenden wir str.encode('ascii', 'ignore') , um die NFD-abgebildeten Zeichen in ASCII umzuwandeln (Fehler zu ignorieren).

    
Mike Pennington 02.01.2013, 12:00
quelle
1

Ich brauchte so etwas, aber lösche nur Zeichen mit Akzenten , ignoriere spezielle und habe diese kleine Funktion ausgeführt:

%Vor%

Ich mag diese Funktion, weil Sie sie anpassen können, falls Sie andere Zeichen ignorieren müssen

    
AlvaroAV 09.07.2017 14:01
quelle
0

Die angegebene URL gibt UTF-8 zurück, da die HTTP-Antwort eindeutig anzeigt:

%Vor%

Die Untersuchung der gespeicherten Datei mit vim zeigt auch, dass die Daten korrekt utf-8-codiert sind ... das Gleiche gilt für das Abrufen der URL mit Python.

    
Andreas Jung 02.01.2013 07:45
quelle