csv datei spalte anhängen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
andeif
User
Beiträge: 2
Registriert: Donnerstag 21. Februar 2008, 13:26

csv datei spalte anhängen

Beitragvon andeif » Donnerstag 21. Februar 2008, 13:48

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Donnerstag 21. Februar 2008, 14:54

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 :)
The Spirit
User
Beiträge: 274
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Beitragvon The Spirit » Donnerstag 21. Februar 2008, 15:09

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()
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 21. Februar 2008, 15:18

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()
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
The Spirit
User
Beiträge: 274
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Beitragvon The Spirit » Donnerstag 21. Februar 2008, 16:49

offtopic:

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]