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?
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
:
und wenden decode
auf einzelne Elemente an:
Oder verwenden Sie np.char.decode
, um es auf jedes Element eines Arrays anzuwenden:
genfromtxt
lässt mich converters
angeben:
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).