Seite 1 von 1

In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 09:46
von Kalli87
Grüße,

Ich möchte gerne in eine CSV-Datei meine Werte eintragen, klappt auch an sich aber was nur nervt is das er alle Werte immer in eine Spalte schreibt statt wie ichs gerne möchte 1 Wert pro Spalte.

Mein Code sieht so aus, übersehe ich etwas?

Code: Alles auswählen

            with open('D:/registration.csv', "w") as csvfile:
                fieldnames = ["Name", "Vorname", "Postleitzahl", "Ort", "Strasse", "Hausnummer", "Telefonnummer"]
                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
                writer.writeheader()
                writer.writerow({"Name": self.name.get(), "Vorname": self.vname.get(), 
                                        "Postleitzahl": self.plz.get(), "Ort": self.ort.get(), 
                                        "Strasse": self.strasse.get(), "Hausnummer": self.hausnr.get(),
                                        "Telefonnummer": self.tele.get()})
Danke

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 09:52
von Sirius3
@Kalli87: was meinst Du mit einer Spalte? Was ist für Dich eine Spalte? Wie siehst Du, dass es nur eine Spalte ist? Wenn Du in Excel die Datei z.B. importierst, mußt Du natürlich das gleiche Spaltentrennzeichen einstellen, wie Python beim Schreiben der csv-Datei verwendet.

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 10:02
von Kalli87
@Sirius3: Danke für den Hinweis ;) Hab gedacht dass das Python dann alleine macht aber war doch nicht so, passt alles jetzt

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 10:05
von Sirius3
@Kalli87: was macht Python alleine? Python macht nichts, was Du ihm nicht sagst.

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 10:12
von BlackJack
@Kalli87: Falls damit gemeint war das Python das Trennzeichen einstellt was Du haben möchtest falls das etwas anderes ist als das Komma (das Format heisst „*comma* separated values”), dann hättest Du jetzt erwartet das der Rechner Deine Gedanken lesen kann oder im voraus weiss mit welcher Software und welchen Einstellungen die Datei später mal geöffnet wird‽ Das wäre eine leicht unrealistische Erwartunghaltung, um's mal vorsichtig auszudrücken. ;-)

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 10:34
von karolus
Hallo
Naja, wenn ich der Signatur von :

Code: Alles auswählen

csv.DictWriter(self, f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
glauben darf, nimmt DictWriter im Prinzip schon die Einstellungen die Excel »mag«..

Karolus

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 10:47
von cofi
Excel "mag" abhaengig von der Lokalisierung unterschiedliche Einstellungen. Im englischen ist es nunmal standardmaessig ',' separiert und im deutschen IIRC ';'.

Was genau "excel" bedeutet, da kannst du das `csv.excel` Objekt untersuchen.

Re: In eine CSV-Datei schreiben aber Spaltenweise

Verfasst: Montag 4. Mai 2015, 10:50
von BlackJack
@karolus: Jain. Das stimmt solange man ein Excel auf einem System verwendet das in der Kombination das mag was das `csv`-Modul dann schreibt. Oder anders gesagt ein Excel auf einem deutschen System mag per Voreinstellung etwas anderes als ein Excel auf einem englischen System. Deutsches Excel mag nämlich das Komma als Spaltentrenner nicht weil das als Zeichen in Dezimalbrüchen vorkommt und deshalb das Semikolon als Spaltentrenner bevorzugt, weil das nicht in Zahlen vorkommt. Es gibt also nicht *den* Excel-Default der für alle Excel-Installationen funktioniert.