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
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