Hallo ich habe folgendes Problem:
Ich habe eine .csv Datei, die ich so verändern möchte das ";" zu " " und " " zu "_" werden.
Über Lösungen bzw Lösungsversuche würde ich mich freuen.
Änfanger Frage: zu csv und string
Hallo!
Am Einfachsten gehts wohl mit der string-Methode translate(). Da muss man sich zumindest keinen Kopf machen, in welcher Reihenfolge man die Ersetzungen durchführt.
Jan
Am Einfachsten gehts wohl mit der string-Methode translate(). Da muss man sich zumindest keinen Kopf machen, in welcher Reihenfolge man die Ersetzungen durchführt.
Code: Alles auswählen
>>> import string
>>> transtable = string.maketrans('; ',' _')
>>> "2345;ASDF;Dies ist ein Satz;234".translate(transtable)
'2345 ASDF Dies_ist_ein_Satz 234'
>>>Python ist installiert? Hat der Rechner Strom?PenPen hat geschrieben:geht net.
Sorry, aber "geht net" ist auch für einen Anfänger arg dürftig. Ein paar mehr Infos (Fehlermeldungen, Fehlverhalten) wären schon nötig.
Jan
-
Gast
Oki stimmt ich hab da so einiges versäumt anzuführen, sorry
Der Rechner hat Strom und Python 2.2.3 ist installiert
Fehlermeldung:
Traceback (most recent call last):
File "./testOne.pyt", line 14, in ?
x.translate(transtable)
AttributeError: 'file' object has no attribute 'translate'
Die Datei habe ich sowohl mit w, a und r geöffnet.
Hoffe das sind genug informationen
Der Rechner hat Strom und Python 2.2.3 ist installiert
Fehlermeldung:
Traceback (most recent call last):
File "./testOne.pyt", line 14, in ?
x.translate(transtable)
AttributeError: 'file' object has no attribute 'translate'
Die Datei habe ich sowohl mit w, a und r geöffnet.
Hoffe das sind genug informationen
Hallo!
(nicht getestet)
Noch eine Anmerkung:
123;ABC;"Ein Satz ; mit Semikolon";234
Das Semikolon im Satz ist nach üblicher csv-Definition kein Value-Trenner und müsste also erhalten bleiben. Das klappt mit obiger Lösung leider nicht. Wenn in Deinen csv-Datei sowas also vorkommen kann, musst Du auf Python Version 2.3 updaten, denn dort gibt es ein csv-Modul, oder ein externes Modul installieren, z.B. http://www.colorstudy.com/software/webware/CSVParse.py .
Jan
translate() arbeitet nur auf Strings, nicht auf Dateien direkt. Du musst also den Dateiinhalt in eine string-Variable einlesen und verändert dann zurückschreiben.Anonymous hat geschrieben:AttributeError: 'file' object has no attribute 'translate'
Code: Alles auswählen
import string
transtable = string.maketrans('; ',' _')
f = open('bla.csv','r')
text = f.read()
f.close()
text = text.translate(transtable)
f = open('bla.csv','w')
f.write(text)
f.close()Noch eine Anmerkung:
123;ABC;"Ein Satz ; mit Semikolon";234
Das Semikolon im Satz ist nach üblicher csv-Definition kein Value-Trenner und müsste also erhalten bleiben. Das klappt mit obiger Lösung leider nicht. Wenn in Deinen csv-Datei sowas also vorkommen kann, musst Du auf Python Version 2.3 updaten, denn dort gibt es ein csv-Modul, oder ein externes Modul installieren, z.B. http://www.colorstudy.com/software/webware/CSVParse.py .
Jan
