.csv File Leerzeile am Ende

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
WurzelAusZwei
User
Beiträge: 2
Registriert: Freitag 17. Januar 2014, 18:28

Hey,

ich bin python-Neuling und schreibe in meinem Programm in ein .csv-File:

Code: Alles auswählen

with open('results.csv', 'w') as file:
    for text, count in results:
      file.write("%s\t%s\r\n" % (text, count))
Das funktioniert alles bis auf die Leerzeile, die am Dateiende entsteht. Wie kann ich das vermeiden?

Liebe Grüße,
WurzelAusZwei
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Was könnte wohl \r\n bedeuten...?
edit: Sorry, hab die Schleife übersehen. Deswegen: was EyDu weiter unten gesagt hat.
Zuletzt geändert von pillmuncher am Freitag 17. Januar 2014, 18:58, insgesamt 1-mal geändert.
In specifications, Murphy's Law supersedes Ohm's.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Ganz einfach: du schreibst die letzte Zeile eben ohne einen Zeilenumbruch ;-) Du könntest zum Beispiel testen, ob es sich bei der aktuellen Zeile schon um die letzte handelt. Den Index zu jedem Eintrag erhältst du mittels enumerate-Funktion:

Code: Alles auswählen

for index, (text, count) in enumerate(results)
Du könntest aber auch, mittels Slicing, alles bis auf den letzten Eintrag schreiben. Für den letzten Eintrag fügst du dann noch eine extra write-Zeile nach der for-Schleife an (Hinweis: sie vorsichtig mit leeren Listen). Und wenn es nur wenige Daten sind, dann bietet sich vielleicht die join-Methode auf strings an:

Code: Alles auswählen

>>> "X".join(["a", "b", "c"])                                                                                                         
'aXbXc'
Oder die beste Lösung: du verwendest das bereits vorhandene csv-Modul, dann musst du dir um nichts mehr Sorgen machen.
Das Leben ist wie ein Tennisball.
BlackJack

Wobei ich mich frage was an der Zeile das Problem ist. Ich sehe eher Probleme wenn die letzte Zeile *nicht* mit einem Zeilenende abgeschlossen ist.

Für CSV-Dateien gibt es übrigens in der Standardbibliothek auch ein Modul. Heisst `csv`. :-)
WurzelAusZwei
User
Beiträge: 2
Registriert: Freitag 17. Januar 2014, 18:28

EyDu hat geschrieben:Hallo und willkommen im Forum!

Ganz einfach: du schreibst die letzte Zeile eben ohne einen Zeilenumbruch ;-) Du könntest zum Beispiel testen, ob es sich bei der aktuellen Zeile schon um die letzte handelt. Den Index zu jedem Eintrag erhältst du mittels enumerate-Funktion:

Code: Alles auswählen

for index, (text, count) in enumerate(results)
Du könntest aber auch, mittels Slicing, alles bis auf den letzten Eintrag schreiben. Für den letzten Eintrag fügst du dann noch eine extra write-Zeile nach der for-Schleife an (Hinweis: sie vorsichtig mit leeren Listen). Und wenn es nur wenige Daten sind, dann bietet sich vielleicht die join-Methode auf strings an:

Code: Alles auswählen

>>> "X".join(["a", "b", "c"])                                                                                                         
'aXbXc'
Oder die beste Lösung: du verwendest das bereits vorhandene csv-Modul, dann musst du dir um nichts mehr Sorgen machen.
Hey,

alles klar, danke! :)
Antworten