Zeilen einer Tabelle untereinander ausgeben

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
Julia98
User
Beiträge: 2
Registriert: Sonntag 6. November 2022, 17:21

Hallo zusammen

Ich habe eine Datei im CSV-Format mit zwei Spalten. Also sowas wie im folgenden:

Code: Alles auswählen

Rezept              Zutaten
Kuchen             Mehl, Eier, Zucker
Suppe               Fleisch Kartoffeln  Kräuter
Brot                   Mehl Salz

Ich möchte nun diese CSV-Datei in eine Text-Datei umwandeln, die so aussieht:

Code: Alles auswählen

Kuchen
Mehl, Eier, Zucker

Suppe     
Fleisch Kartoffeln  Kräuter

Brot
Mehl Salz


Ich habe bereits die CSV-Datei eingelesen, und sie als Liste gespeichert. Aber weiter komme ich leider nicht :(
import csv

li = []
with open("zutaten.csv") as f:
reader = csv.reader(f)


for row in reader:
print("")
li.append((" ".join(row)))



print(li)
Weiß jemand vielleicht wie das geht? Wäre sehr nett, wenn mir jemand weiterhelfen könnte?

Viele Grüße
Julia
Üpsilon
User
Beiträge: 225
Registriert: Samstag 15. September 2012, 19:23

Ich nehme mal an, in der Eingansdatei zwischen "Brot" und "Mehl Salz" steht ein Tabulator.
Dann würd ichs folgendermaßen probieren:

Code: Alles auswählen

with open("zutaten.csv") as f:
    r = csv.reader(f, delimiter="\t")
    for line in r:
        for entry in line:
            print(entry)
        print()
PS: Die angebotene Summe ist beachtlich.
Julia98
User
Beiträge: 2
Registriert: Sonntag 6. November 2022, 17:21

Üpsilon hat geschrieben: Sonntag 6. November 2022, 18:24 Ich nehme mal an, in der Eingansdatei zwischen "Brot" und "Mehl Salz" steht ein Tabulator.
Dann würd ichs folgendermaßen probieren:

Code: Alles auswählen

with open("zutaten.csv") as f:
    r = csv.reader(f, delimiter="\t")
    for line in r:
        for entry in line:
            print(entry)
        print()
Vielen Dank es hat geklappt :) Ja die Zutaten sind gering das stimmt. Es ist nur ein Beispiel deswegen.
Aber wissen Sie vielleicht noch wie man das Ergebnis als txt-Datei abspeichert?
Üpsilon
User
Beiträge: 225
Registriert: Samstag 15. September 2012, 19:23

Hallo, dafür müsste man wahrscheinlich an den Anfang setzen:
ausgabe = open("ausgabe.txt", "w")

Ans Ende setzen:
ausgabe.close()

Und das print(entry) ersetzen durch:
ausgabe.write(entry + "\n")

Und das print() ersetzen durch:
ausgabe.write("\n")
Benutzeravatar
__blackjack__
User
Beiträge: 13533
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Naja, da im Original schon eine Datei mit ``with`` verwendet wird, sollte man jetzt nicht anfangen das für die andere Datei ohne zu machen.

Beim öffnen der Datei fehlt noch die Angabe der Kodierung und bei der Datei für das CSV-Modul noch das Argument ``newline=""``. Siehe Dokumentation vom `csv`-Modul.

Code: Alles auswählen

- (void)countSheep {
    unsigned int sheep = 0;
    while ( ! [self isAsleep]) { ++sheep; }
}
Antworten