Seite 1 von 1

csv datei spalte anhängen

Verfasst: Donnerstag 21. Februar 2008, 13:48
von andeif
Hallo,
ich habe ein csv date

x,y,z
1,2,3
3,4,5

und möchte nun die z Spalte kopieren und anhängen

x,y,z,z
1,2,3,3
3,4,5,5

Hab aber leider keine Ahung wie ich das anstellen soll.
Hier mein bisheriger Code der mir die letzte Spalte ausgibt.
Wie hänge ich diese nun an die csv date an
.....
reader_csv = csv.reader(open(input, 'rb'))

for row in reader_csv:
print row[2]
.......


Kann mir da jemand weiterhelfen??
Danke

Verfasst: Donnerstag 21. Februar 2008, 14:54
von Hyperion
Hm ... also ich würde es so versuchen:

Code: Alles auswählen

tmp=[]
for row in reader_csv: 
    tmp.append(row[2])
neu = zip(reader_csv, tmp)
Das Durchgehen ist irgendwie unschön ... evtl. kann man das optimieren. Aber so sollte es zumindest funzen :)

Verfasst: Donnerstag 21. Februar 2008, 15:09
von The Spirit
mal richtig umstänglich aber es läuft und berücksichtigt auch das \n nach dem letzten zeichen in jeder zeil

Code: Alles auswählen

file = open('test.csv', 'r')
ziel = open('test_neu.csv', 'w')
for line in file:
	line_split = line.split(',')
	line_split.append(str(line_split[2].split('\n')[0]))
	line_split[2] = line_split[3]
	a = 0
	while a < len(line_split):
		ziel.write(line_split[a] + ',')
		a += 1
	ziel.write('\n')
ziel.close()
file.close()

Verfasst: Donnerstag 21. Februar 2008, 15:18
von gerold
The Spirit hat geschrieben:

Code: Alles auswählen

file = open('test.csv', 'r')
...
	line_split = line.split(',')
Hallo Spirit!

Zuerst überschreibst du ``file`` und dann willst du dem OP auch noch ``split`` anbieten?

Split berücksichtigt absolut keine Sonderfälle. Es kommt nicht mal mit einem Beistrich in den Daten klar. Das csv-Modul ist auf jeden Fall die bessere Wahl.

mfg
Gerold
:-)

PS: In etwa so:

Code: Alles auswählen

import csv

inputfile = file("input.csv", "rb")
outputfile = file("output.csv", "wb")

csv_out = csv.writer(outputfile)
for row in csv.reader(inputfile):
    if row:
        row.append(row[-1])
        csv_out.writerow(row)

outputfile.close()
inputfile.close()

Verfasst: Donnerstag 21. Februar 2008, 16:49
von The Spirit
offtopic:

danke gerold, wieder was dazugelerent. werde mal sehen, ob ich das csv modul demnächst mal wo gleich einsetzten kann