2016-07-01 6 views
0

Ich habe viele Textdateien unbekannter Kodierung, die ich überhaupt nicht in R öffnen konnte, wo ich gerne mit ihnen arbeiten würde. Ich landete mit Hilfe von codecs in UTF-16 in der Lage zu öffnen, sie in Python up:Konvertieren tabulatorgetrennter Textdatei mit unbekannter Kodierung in R-kompatible Kodierung in Python

f = codecs.open(input,"rb","utf-16") 
for line in f: 
    print repr(line)  

Eine Zeile in meinen Dateien jetzt so aussieht, wenn in Python gedruckt:

u'06/28/2016\t14:00:00\t0,000\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 
\x00\x00\x00\x00\t00000000\t6,000000\t0,000000\t144,600000\t12,050000 
\t8,660000\t-120,100000\t-0,040000\t-0,110000\t1,340000\t5,360000 
\t-1,140000\t-1,140000\t24,523000\t269,300000\t271,800000\t0,130000 
\t272,000000\t177,000000\t0,765000\t0,539000\t\r\n' 

Die " "Am Anfang sagt es mir, dass das in Unicode ist, aber jetzt weiß ich nicht wirklich, was ich damit mache. Mein Ziel ist es, die Textdateien in etwas zu konvertieren, das ich in R verwenden kann, z. richtig csv codiert, aber ich habe mit unicodecsv fehlgeschlagen:

in_txt = unicodecsv.reader(f, delimiter = '\t', encoding = 'utf-8') 
out_csv = unicodecsv.writer(open(output), 'wb', encoding = 'utf-8') 

out_csv.writerows(in_txt) 

mir jemand sagen kann, was der Haupt Fehler in meinem Ansatz ist?

Antwort

0

Sie können versuchen guess_encoding(y) aus Readr-Paket in R. Es ist nicht zu 100% kugelsicher, aber es hat für mich in der Vergangenheit gearbeitet und soll zumindest erhalten Sie in der richtigen Richtung:

guess_encoding(y) 
#>  encoding confidence 
#> 1 ISO-8859-2  0.4 
#> 2 ISO-8859-1  0.3 

versuchen read_tsv() mit Ihren Dateien eingelesen und dann versuchen guess_enconding()

Hoffe es hilft.

+0

danke, 'guess_encoding' hat mir sehr geholfen! Nur der Vollständigkeit halber: Es war eine utf-16-le-Datei voller Nullbytes (\ x00), die ich in Python entfernte. danach und coversion zu utf-8 hat alles in R geklappt! – lueromat

+0

froh, dass es funktioniert hat! – Altons