Laden der UTF-8-Datei in Python 3 mit numpy.genfromtxt

8

Ich habe eine CSV-Datei, die ich von der WHO-Website heruntergeladen habe ( Ссылка , Downloads, Mehrzwecktisch im CSV-Format "). Ich versuche, die Datei in ein numpy Array zu laden. Hier ist mein Code:

%Vor%

Und ich bekomme

  

UnicodeDecodeError: 'ASCII-Codec' kann das Byte 0xc3 nicht in Position dekodieren   2: Ordnungszahl nicht im Bereich (128).

Ich nehme an, dass numpy ein Problem beim Lesen der Zeichenfolge "Côte d'Ivoire" hat. Die Datei ist richtig codiert UTF-8 (nach meinem Texteditor). Ich benutze Python 3.4.3 und numpy 1.9.2.

Was mache ich falsch? Wie kann ich die Datei in numpy lesen?

    
JustAC0der 07.10.2015, 19:59
quelle

1 Antwort

8

In Python3 kann ich tun:

%Vor%

Was bedeutet, dass ich wahrscheinlich eine 'UTF-8'-Datei (regulär, nicht Byte-Modus) und Leseleitungen öffnen und sie Elementen eines Arrays wie x zuordnen könnte.

Aber genfromtxt besteht darauf, mit Byte-Strings (ascii) zu arbeiten, die nicht mit dem größeren UTF-8 set (7 Bytes v 8) umgehen können. Also muss ich decode irgendwann anwenden, um ein U -Array zu erhalten.

Ich kann es in ein 'S' Array mit genfromtxt :

laden %Vor%

und wenden decode auf einzelne Elemente an:

%Vor%

Oder verwenden Sie np.char.decode , um es auf jedes Element eines Arrays anzuwenden:

%Vor%

genfromtxt lässt mich converters angeben:

%Vor%

Wenn die csv eine Mischung aus Strings und Zahlen hat, ist diese converters -Ansicht einfacher zu verwenden als die np.char.decode . Spezifizieren Sie einfach den Konverter für jede String-Spalte.

(Siehe meine früheren Änderungen für Python2-Versuche).

    
hpaulj 07.10.2015, 20:28
quelle

Tags und Links