csv Zeilenweise generieren

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

Hallo,
ich möchte einen csv-Writer als Generator benutzen:

Code: Alles auswählen

def generate_csv(entries):
    for row in entries:
        yield convert_one_row_to_csv(row, delimiter=";")
Bevor ich jetzt selbst was zusammenstricke, wollte ich fragen, ob jemand ein Modul kennt, das das kann.
narpfel
User
Beiträge: 691
Registriert: Freitag 20. Oktober 2017, 16:10

https://docs.python.org/3/library/csv.html#csv.writer hat geschrieben:csvfile can be any object with a write() method.

Code: Alles auswählen

class LineWriter:
    def write(self, s):
        return s


def generate_csv(entries):
    writer = csv.writer(LineWriter(), delimiter=";")
    for row in entries:
        yield writer.writerow(row)
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Danke narpfel.

Wow, die Funktionalität ist ja auch dokumentiert:
csvwriter.writerow(row):
Write the row parameter to the writer’s file object, formatted according to the current dialect. Return the return value of the call to the write method of the underlying file object.
So verquer ab ich nicht gedacht.
Antworten