Seite 1 von 1

Änfanger Frage: zu csv und string

Verfasst: Dienstag 19. August 2003, 08:52
von PenPen
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.

Re: Änfanger Frage: zu csv und string

Verfasst: Dienstag 19. August 2003, 09:12
von Voges
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.

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

Verfasst: Mittwoch 20. August 2003, 07:51
von PenPen
geht net.

Verfasst: Mittwoch 20. August 2003, 08:21
von Voges
PenPen hat geschrieben:geht net.
Python ist installiert? Hat der Rechner Strom?
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

Verfasst: Mittwoch 20. August 2003, 09:45
von 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

Verfasst: Mittwoch 20. August 2003, 10:57
von Voges
Hallo!
Anonymous hat geschrieben:AttributeError: 'file' object has no attribute 'translate'
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.

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

Verfasst: Mittwoch 20. August 2003, 13:39
von PenPen
Danke jetzt hat es erstmal geklappt
:D

Verfasst: Mittwoch 20. August 2003, 18:53
von Milan
In Python 2.3 gibts auch schon ein eingebautes Modul csv, dass das selbe leistet... ;)

Verfasst: Mittwoch 20. August 2003, 19:16
von Voges
Milan hat geschrieben:In Python 2.3 gibts auch schon ein eingebautes Modul csv, dass das selbe leistet... ;)
Schrub ich bereits :wink: :wink:
Jan

Verfasst: Mittwoch 20. August 2003, 19:28
von Milan
hups... hab deinen langen Beitrag nur schnell überflogen gehabt und den Link gesehen... :oops: :roll: