2016-04-26 6 views
0

これは私のライン保存*スペースなし.CSVと二重引用符は

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

であり、これは私の出力です:私は、スペースを持っている必要はありません

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

。どのようにスペースと二重引用符でファイルを保存するには?


ソースファイル(new_list):

['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']"] 

保存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

完全なコード例を教えてください。 csv – salomonderossi

+1

を書き込むために使用しているデータで、.strip()コマンドを使用してください。 –

+0

質問が更新されました。 – Luka

答えて

0

あなたがここにあなたのcsv.writer()呼び出しでescapechar=' '引数を指定したので、私は実際にこれが起こっていると思います:

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

The documentation for escapechar言う:

ダブルクォートが Falseの場合 が引用がQUOTE_NONEとquotecharに設定されている場合、区切り文字をエスケープするためにライターで使用される1文字の文字列。読み込み時には、エスケープ文字は特殊文字の後ろの から特別な意味を削除します。デフォルトではNoneに設定されており、エスケープは無効になっています。

quoting=csv.QUOTE_NONEを使用しているので、指定したようにセミコロンの前にセミコロンがあります。あなたの質問に貼り付けた3番目のリストは、5番目のインデックスに;です。

これは、リストの行として構造化されたデータを持つファイルから読み取ろうとしているかどうかわからないため、これは完全にあなたの問題を解決するとは思えません。また、あなたのソースファイルに書いているかもしれないように見えますが、意図しない結果を招く可能性があります。

+0

私もあなたのコードラインを試して、私の問題を解決していません。 私は各行にスペースバーを持っています: 'O; 3; INFO; ; 0; 4;状態[1,1,1]; 0; 0; 4; ; 'V; 5;占有; CPUA.DB1610.128、X0; RW' このファイルを開いて、スペースバーを削除して再度保存する方が良いでしょうか?しかし、私は同じ問題を抱えていると思いますか? – Luka

+0

その行は元の質問からコピーされ貼り付けられます。 –

関連する問題