Ich versuche, eine Datei mit Daten für verschiedene Daten zu lesen mit numpy.genfromtxt()
in Python3. Die Datei sieht im Grunde wieLoading UTF-8-Datei in Python 3 mit numpy.genfromtxt()
Date,Open,High,Low,Close,Volume
1-Apr-15,108.33,108.66,108.33,108.66,290
aber enthalten fehlt als -
markiert Werte.
Der folgende Code funktioniert in python2 feinen
str2date = lambda x: datetime.strptime(x, '%d-%b-%y').strftime('%Y-%m-%d')
data = np.genfromtxt('test.dat', dtype="S9,f8,f8,f8,f8,f8", delimiter=',', names=True, missing_values='-', converters={0: str2date})
aber nicht in python3 mit
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
locale.getpreferredencoding(False)
kehrt UTF-8 als Standard-Codierung und die vorgeschlagene Lösung, die durch die Codierung für die Eingangseinstellung Strom vorgeschlagen zum Beispiel here ist ein bisschen schwierig. Ich habe auch versucht, die encoding of the terminal ohne Erfolg einzustellen. Ich muss auch zugeben, dass ich in this answer keine Lösung für mein Problem sehe, da in der Datei keine Sonderzeichen enthalten sind - oder zumindest sehe ich sie nicht.
Wie kann ich dieses Problem lösen, ohne auf python2 zurückzugehen?
Es scheint, dass genfromtxt für nicht definierte Grund im ASCII-Modus fällt .... haben Sie genfromtxt versucht (open ('test.dat', encoding = 'utf-8'), ... oder effizienter, pandas.read_csv? –
'genfromtxt (offen ('test.dat', encoding = 'utf-8')) 'beschwert sich über Bytes bietet statt einer Zeichenfolge. Aber Pandas funktioniert wie ein Charme. Danke :). Du stellst das in eine Antwort, ich werde es akzeptieren. – Martin
'genfromtxt' öffnet die Datei im Binärmodus und arbeitet mit Bytestrings (Py3). Die "Konverter" -Lösung in https://stackoverflow.com/questions/33001373/loading-utf-8-file-in-python-3-using-numpy-genfromtxt hilft nicht? – hpaulj