2016-04-26 13 views
0

Das ist meine LinieSpeichern * .csv ohne Leerzeichen und Anführungszeichen

csv_output = csv.writer(f_output, delimiter=';', quoting=csv.QUOTE_NONE, escapechar=' ')

Und das ist meine Ausgabe:

O;4;State[1,1,2]; ;

Ich möchte keine Leerzeichen haben. Wie speichere ich Datei ohne Leerzeichen und doppelte Anführungszeichen?


Quelldatei (neue_liste):

['O', '3', 'INFO', '', '', ';', "']"] 
['V', '4', 'FillLevel', "S7:[CPUA]DB1610', 'INT0', '64", '2002', 'CPUA.DB1610.0,I,64;RW', 'RW', '0', "0']"] 
['O', '4', 'State[1,1,1]', '', '', ';', "']"] 
['V', '5', 'Occupied', "S7:[CPUA]DB1610', 'X128.0", 'B', 'CPUA.DB1610.128,X0;RW', 'RW', '0', "0']"] 
['V', '5', 'Locked', "S7:[CPUA]DB1610', 'X128.1", 'B', 'CPUA.DB1610.128,X1;RW', 'RW', '0', "0']"] 
['V', '5', 'ErrDriveRoll', "S7:[CPUA]DB1610', 'X128.2", 'B', 'CPUA.DB1610.128,X2;RW', 'RW', '0', "0']"] 

speichern csv:

with open(source_file, "w", newline='') as f_output: 
      csv_output = csv.writer(f_output, delimiter=';', quoting=csv.QUOTE_NONE, escapechar=' ') 
      for r in range(len(new_list)): 
       csv_output.writerow(new_list[r][0:3] + new_list[r][5:6]) 
+0

Können Sie bitte ein vollständiges Codebeispiel angeben? Mit den Daten, die Sie verwenden, um die CSV – salomonderossi

+1

zu schreiben, verwenden Sie den Befehl .strip() –

+0

Die Frage wird aktualisiert. – Luka

Antwort

0

Ich glaube tatsächlich, dass dies geschieht, weil man hier eine escapechar=' ' Argument in Ihrem csv.writer() Aufruf angegeben haben :

csv_output = csv.writer(f_output, delimiter=';', quoting=csv.QUOTE_NONE, escapechar=' ') 

The documentation for escapechar sagt:

A one-Zeichenkette, die durch den Autor verwendet, um das Trennzeichen zu entkommen, wenn zitiert zu QUOTE_NONE und die QuoteChar gesetzt, wenn double falsch ist. Beim Lesen entfernt der Escape-Char eine spezielle Bedeutung aus dem folgenden Zeichen . Die Standardeinstellung lautet "Keine", wodurch das Escaping deaktiviert wird.

Und seit Sie quoting=csv.QUOTE_NONE verwendet haben, hat es Semikolons mit einem Leerzeichen vorangestellt, das Sie angegeben haben. Ihre dritte Liste, die Sie in Ihre Frage eingefügt haben, hat einen ; auf seinem 5. Index.

Ich glaube immer noch nicht, dass diese vollständig Ihr Problem lösen aber, weil ich kann nicht sagen, wenn Sie aus einer Datei zu lesen sind versucht, die ihre Daten strukturiert, wie Reihen von Listen haben. Es sieht auch so aus, als würden Sie in Ihre Quelldatei schreiben, was unbeabsichtigte Konsequenzen haben könnte.

+0

Ich habe auch Ihre Codezeile versucht und mein Problem nicht gelöst. Jetzt habe ich in jeder Zeile Leertaste: 'O; 3; INFO; ; '' V; 4; FillLevel; CPUA.DB1610.0, I, 64; RW' 'O; 4; state [1,1,1]; ; '' V; 5; besetzt; CPUA.DB1610.128, X0; RW' , Vielleicht spacebar und wieder speichern entfernen diese Datei wird besser zu öffnen? Aber ich denke, als ich das gleiche Problem haben werde? – Luka

+0

Diese Zeile wird kopiert und eingefügt von Ihrer ursprünglichen Frage. –

Verwandte Themen