Entfernen Sie Sonderzeichen aus einer csv-Datei mit python
Scheint es etwas zu diesem Thema bereits (So ersetzen Sie alle diese Sonderzeichen mit Leerzeichen in python?), aber ich kann nicht herausfinden, diese einfache Aufgabe für das Leben von mir.
Habe ich eine .CSV-Datei mit 75 Spalten und knapp 4000 Zeilen. Ich brauche, um zu ersetzen Sie alle den 'Sonderzeichen' ($ # & * ect) mit '_' und schreiben in eine neue Datei. Hier ist, was ich habe, so weit:
import csv
input = open('C:/Temp/Data.csv', 'rb')
lines = csv.reader(input)
output = open('C:/Temp/Data_out1.csv', 'wb')
writer = csv.writer(output)
conversion = '-"/.$'
text = input.read()
newtext = '_'
for c in text:
newtext += '_' if c in conversion else c
writer.writerow(c)
input.close()
output.close()
All dies gelingt, ist um alles zu schreiben, um die Ausgabe-Datei als eine Spalte hat, produziert mehr als 65K Zeilen. Darüber hinaus werden die Sonderzeichen immer noch vorhanden!
Sorry für die überflüssigen Frage.
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich könnte etwas tun, wie
schaltet
(beachten Sie, dass ich ein börsennotierter Wert) in
Recht jetzt Ihren code Lesen, den gesamten text in eine große Linie:
Ausgehend von einem
_
Charakter:Schleife über jeden einzelnen Charakter in
text
:Fügen Sie die korrigierte Charakter
newtext
(sehr langsam):Und dann schreiben die original Charakter (?), als eine Spalte, um einen neuen csv:
.. was unwahrscheinlich ist, zu sein, was Sie wollen. :^)
newrow = [''.join('_' if c in conversion else c for c in entry) for entry in row]
diese Zeile code funktioniert ?Scheint dies nicht zu benötigen, um mit CSV ' s insbesondere (solange die Sonderzeichen sind nicht Ihre Spalte Trennzeichen).
len(conversion)
Linien für jede Zeile, oder etwa nicht?Zusätzlich zu den bug hingewiesen hat @Nisan.H und zulässiger Punkt von @dckrooney, dass Sie möglicherweise nicht brauchen, um zu behandeln, die Datei in einer besonderen Art und Weise in diesem Fall, nur weil es eine CSV-Datei (siehe mein Kommentar unten):
writer.writerow()
sollte eine Sequenz von strings, von denen jeder hätte geschrieben werden sollen, durch Kommas getrennt (siehe hier). In Ihrem Fall, dass Sie schriftlich eine einzelne Zeichenfolge.input
und durchlines
aber nur eigentlich liest ausinput
(deshalb der code nicht die Datei als CSV-Datei sowieso).newtext
und schreibt jede version dieser Variablen. So, die erste version vonnewtext
wäre 1 Zeichen lang, das zweite 2 Zeichen lang sein, die Dritte 3 Zeichen lang sein, etc.Schließlich, gegeben, dass Sie eine CSV-Datei kann haben Anführungszeichen in es, kann es tatsächlich notwendig sein Angebot mit der Eingabe-Datei, die speziell als CSV zu vermeiden, ersetzen Anführungszeichen, die Sie behalten möchten, z.B. Anführungszeichen, die es zu schützen Kommas, die vorhanden Felder innerhalb der CSV-Datei. In diesem Fall wäre es notwendig, um jedes Feld der CSV-Datei einzeln, dann schreiben Sie jede Zeile der neuen CSV-Datei.
Vielleicht versuchen
rows = s.split('\n')
nach der Schleife