Seite 1 von 1

csv nach txt

Verfasst: Sonntag 24. Januar 2021, 02:10
von torsten_156
Hallo,

ich habe eine csv und möchte den Inhalt gern in eine txt speichern. Das Proble hier ist, dass ich die gesamte Zeile der csv benötige. Also einzelne "Spalten" aus der csv lesen und diese dann zusammengesetzt nach txt schieben reicht mir nicht. Warum kann ich erklären. Also, ich habe solche Daten in der csv:

Code: Alles auswählen

18.11.2020;aaa;bbb;ccc
19.11.2020;aaa;;ccc
Es kommt also vor, dass hier manche "Zellen" nicht gefüllt sind. Um genau das zu erkennen benötige ich den Inhalt der csv im txt-Format. Denn so erkenne ich die beiden ";;".

Ich habe bereits das hier probiert:

Code: Alles auswählen

import csv

csv_file = "convert_to_text.csv"
txt_file = "converted_from_csv.txt"
with open(csv_file, newline='\n') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=";", quotechar='|')
    for row in spamreader:
        print(', '.join(row))
Ich erhalte dabei diesen Fehler:

Code: Alles auswählen

_csv.Error: line contains NUL
Gruß
Torsten

Re: csv nach txt

Verfasst: Sonntag 24. Januar 2021, 04:36
von __blackjack__
@torsten_156: Ich bin gerade von der Problembeschreibung verwirrt. CSV-Dateien *sind* Textdateien. Halt welche mit einer gewissen Struktur, aber eben doch Textdateien die man auch im Texteditor öffnen kann und da kann man dann auch leere Felder sehen/finden.

Die Ausnahme sagt, dass in der Datei Nullbytes sind. Damit ist das wahrscheinlich keine Textdatei. Oder die geratene Kodierung stimmt nicht. Die sollte man beim öffnen von Textdateien sowieso besser explizit angeben. Falls es eine Textdatei ist, dann ist sie wahrscheinlich UTF-16 oder UTF-32 kodiert, denn das würde Nullbytes erklären.

Das `newline`-Argument muss für CSV-Dateien übrigens die leere Zeichenkette sein, nicht "\n".

Re: csv nach txt

Verfasst: Sonntag 24. Januar 2021, 19:09
von torsten_156
Hi,
ich dussel! Bin nicht auf die Idee gekommen eine csv so zu öffnen als wäre es eine txt. Habe es mal so probiert und muss sagen: genau das wollte ich ;-)

Code: Alles auswählen

datei = open('Testfile.csv','r')

for zeile in datei:
    print(datei.readline())

datei.clos
Vielen Dank
Torsten