csv nach txt

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
torsten_156
User
Beiträge: 43
Registriert: Freitag 5. April 2019, 20:10

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
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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".
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
torsten_156
User
Beiträge: 43
Registriert: Freitag 5. April 2019, 20:10

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
Antworten