In CSV schreiben

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.
Antworten
Malinka
User
Beiträge: 18
Registriert: Donnerstag 29. August 2013, 15:53

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?
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.
Malinka
User
Beiträge: 18
Registriert: Donnerstag 29. August 2013, 15:53

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.
Malinka
User
Beiträge: 18
Registriert: Donnerstag 29. August 2013, 15:53

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?
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@Malinka: ich sehe hier weder Blöcke, noch mehrere Zeilen noch Leerzeilen. Post doch mal sinnvollen Code.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten