Seite 1 von 1

In CSV schreiben

Verfasst: Mittwoch 11. Dezember 2013, 14:55
von Malinka
So, ich mal wieder ;-)

Habe auch diesmal eine eher kurze Frage, zu der ich einfach nirgends eine Antwort finden konnte.
Kann man, wenn man Daten in eine csv-Datei schreiben will, die Spalten wechseln?

Genauer: Ich habe 5 Blöcke mit Daten. Jeder Block soll in einer Spalte eingefügt werden. Geht das? Wenn ja, wie wechsle ich die Spalte nach der Eingabe des ersten Blocks?

Re: In CSV schreiben

Verfasst: Mittwoch 11. Dezember 2013, 15:12
von BlackJack
@Malinka: Was sind „Blöcke mit Daten” in Datenstrukturen ausgedrückt? Sind das einzelne Spalten? Oder selbst wieder 2D-Strukturen?

Das `csv`-Modul möchte gerne ein iterierbares Objekt welches Zeilendaten liefert. Wenn Du die als einzelne Spalten oder mehrere Zeilendaten-Strukturen hast, dann könnte man `zip()`, `itertools.izip()`, oder `itertools.izip_longest()` verwenden. Letzteres falls die Spalten oder Tabellen, die nebeneinander gesetzt werden sollen, nicht alle gleich lang sind.

Re: In CSV schreiben

Verfasst: Mittwoch 11. Dezember 2013, 15:28
von Malinka
Okay, blöd ausgedrückt...

Ich habe Dictionaries. Die Keys sind sozusagen meine Daten

So in etwa

Code: Alles auswählen

for word in dict:
    wort1 = word
    print(wort1, file=outfile)
Mache ich das, landet alles zu Wort1 in einer Spalte. Das möchte ich jetzt mit Wort2, Wort3 usw. machen.


EDIT: Ich habe übrigens das csv-Modul nicht verwendet.

Re: In CSV schreiben

Verfasst: Mittwoch 11. Dezember 2013, 16:09
von Malinka
Okay, ich habe es jetzt so mit dem csv-Modul gelöst. ;-)

Code: Alles auswählen

writer.writerow([wort1,wort2,wort3,wort4,wort5,wort6])


Da klappt auch soweit. Ich habe alles passend zueinander in den Zeilen.
Aber ich habe nach jeder Zeile eine Leerzeile. Wie kann ich die hier entfernen?

Re: In CSV schreiben

Verfasst: Mittwoch 11. Dezember 2013, 16:12
von Sirius3
@Malinka: ich sehe hier weder Blöcke, noch mehrere Zeilen noch Leerzeilen. Post doch mal sinnvollen Code.

Re: In CSV schreiben

Verfasst: Mittwoch 11. Dezember 2013, 18:57
von Hyperion
@Malinka: Probiere es mal mit dem Parameter ``newline=''`` in der ``open``-Funktion.

Ich sehe da vor allem schreckliche Dinge wie die Nummerierung von Namen... das ist quasi immer ein Fehler im Design! Vielleicht schilderst Du uns jetzt einmal ausführlich, gerne mit einem Beispiel von Hand, was Du eigentlich machen willst.