2017-02-23 3 views
2

Haftungsausschluss: Ich habe etwa 3 Monate Programmiererfahrung ... so Entschuldigung im Voraus für alle dummen Fragen.Entfernen von Backslashes aus Daten mit Python 2.7

Ich habe eine 9GB CSV-Datei Ich versuche, mit Python zu bereinigen 2.7

ich entfernen müssen/ersetzen/Streifen, was auch immer Sie es nennen wollen .... alle Instanzen von „\“ verstreuten die Daten.

Dies ist, was ich mit so weit habe kommen:

#Python 2.7 
csvfileIn = open("dataexample.csv", "r") 
csvOut = open("dataexample2.csv", "w") 
for i, row in enumerate(csvfileIn.readline()): 
    row = row.replace("\"", "") 
    csvOut.write(row) 
csvOut.close() 

Diese CSV-Datei nicht durchlaufen, wie ich es gehofft. Ich bekam den Rat, readline() im Gegensatz zu readlines() zu verwenden, weil die Datei so groß ist.

Ich würde die Beispieldatendatei beifügen, aber ich habe nicht genug Straße Kred., Um eine Datei anzuhängen. Ich denke, die letzte Frage, die ich gestellt habe, war dumm, also habe ich einige Repunkte verloren. screenshot of example data

Vielen Dank für jede Hilfe!

Aktualisiert/Fixed-Code

#Python 2.7 
csvfileIn = open("dataexample.csv", "r") 
csvOut = open("dataexample2.csv", "w") 


for i, row in enumerate(csvfileIn): 
    row = row.replace("\\", "") 
    csvOut.write(row) 


csvOut.close() 
csvfileIn.close() 
+3

'enumerate (csvfileIn.readline())' wird nur die erste Zeile der Datei aufzählen. Dateien sind iterierbar, verwenden Sie also 'enumerate (csvfileIn)'. –

Antwort

4

1) ersetzen row = row.replace("\"", "") mit row = row.replace("\\", "")

sollten Sie den Backslash

2) Wie von Rawing im Kommentar vorgeschlagen, ersetzen enumerate(csvfileIn.readline()) mit enumerate(csvfileIn)

Alternativ, wenn i noch nie in Ihrem Code verwendet wurde, durchlaufen nur die Datei von for row in csvfileIn:

Schließlich, vergessen Sie nicht csvfileIn

+0

Ich bekomme ein "AttributeError: 'Tupel' Objekt hat kein Attribut 'ersetzen'"? Ich habe meine ursprüngliche Frage mit dem von mir getesteten Code und der Fehlermeldung aktualisiert. – Tommy

+1

@Tommy, wenn Sie Enumerate verwenden. es ist 'für i, Zeile in enumerate (csvfileIn)' dann Zeile ist String anders als Tupel – haifzhan

+1

@Tommy ersetzen 'für Zeile in Aufzählung (csvfileIn):' mit 'für i, Zeile in Aufzählung (csvfileIn): ' – haifzhan

2

Verwenden Doppel Backslash

row.replace("\\", "") 

\\ Doppel schließen Backslash bedeutet Backslash in String

Single Backslash vorhergehende Char bedeutet specia l Zeichen ex: \ n - neue Zeile