In eine CSV-Datei schreiben aber Spaltenweise

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
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

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

@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.
Kalli87
User
Beiträge: 281
Registriert: Montag 10. November 2014, 11:27

@Sirius3: Danke für den Hinweis ;) Hab gedacht dass das Python dann alleine macht aber war doch nicht so, passt alles jetzt
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Kalli87: was macht Python alleine? Python macht nichts, was Du ihm nicht sagst.
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. ;-)
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
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.
Antworten