Seite 1 von 1

sep=';' nicht am Ende darstellen lassen

Verfasst: Sonntag 7. Februar 2021, 20:20
von Omm
Hall zusammen
Wie kann ich verhindern, dass kein Separator eingetragen wird?

Code: Alles auswählen

import pandas as pd

    def write_row_in_file(self, A, B, C, D=None, E=None):
        file = path.abspath(path.join(__file__, '../../../', 'data', DATEI))
        data = pd.DataFrame([[A, B, C, D, E]])
        data.to_csv(file, index=False, header=False, mode='a', sep=';')


self.write_row_in_file('spA', 'spB','spC')        
A bis C haben immer einen Wert, D oder E nur manchmal.
d.h. der Eintrag in die Datei sieht dann so (spA;spB;spC;;) aus. Ziel ist es, dass es in diesem Fall dann so (spA;spB;spC) aussieht.
D.h. die Semikolon am Schluss, sollen nicht mit eingetragen werden.
Wie kann ich dies anpassen.

Re: sep=';' nicht am Ende darstellen lassen

Verfasst: Sonntag 7. Februar 2021, 20:36
von Sirius3
Was willst Du da eigentlich machen? Für jede einzelne Zeile einen neuen Dataframe zu erzeugen ist komisch.
Und die offensichtliche Lösung ist, D und E einfach weg zu lassen.

Re: sep=';' nicht am Ende darstellen lassen

Verfasst: Sonntag 7. Februar 2021, 20:51
von Omm
eigentlich soll die DATEI um eine Zeile erweitert werden. Beispielhaft mit spA bis spE.
Wenn ich es wie nachstehen löse, dann muss ich mir die Zeile zusammenstellen. Dies möchte ich, wenn möglich umgehen.
Der Zeileneintrag hat leider manchmal 3 oder max. 5 Werte. Weglassen geht nicht.

Code: Alles auswählen

    def write_row_in_file(self, datenset):
        file = path.abspath(path.join(__file__, '../../../', 'data', DATEI))
        data = pd.DataFrame([datenset])
        data.to_csv(file, index=False, header=False, mode='a')

self.write_row_in_file('spA;spB;spC')        

Re: sep=';' nicht am Ende darstellen lassen

Verfasst: Sonntag 7. Februar 2021, 20:57
von __deets__
Das ist dann kein CSV. Das hat per definition eine feste Anzahl spalten. Wenn du also mit den üblichen csv-Modulen damit arbeiten willst, muss das auch so sein. Es ist aber vollkommen üblich, leere Felder, also damit auch direkt aufeinander folgende Trennzeichen, zu haben. Warum stört dich das?

Re: sep=';' nicht am Ende darstellen lassen

Verfasst: Sonntag 7. Februar 2021, 21:07
von Omm
ja genau, es ist eine txt Datei.
evtl. sollte ich das Forma anpassen.
Egal, du hast recht, eigentlich ist es völlig egal, ob da noch Semikolon stehen. Für die Darstellung werde ich das ganz später sowieso in einer Tabelle darstellen.

Vielen Dank für die Hilfe