2016-10-19 3 views
0

Excelから来るものに似たcsvファイルを受け取り、パイプで区切ったファイルとして出力する小さなスクリプトをPythonで作成しました。複数の行を含むセルに遭遇すると、現在、行末にバックスラッシュ(エスケープ文字として指定したもの)が追加され、次の行でセルが続行されます。私がやりたいことは、バックスラッシュの代わりに新しい行が置き換えられ、同じ行のレコードを継続するスペース文字または文字列を指定できることです。私はこれを達成するためにいくつかの問題を抱えています。 csvモジュールを使用してこれを行う簡単な方法はありますか?今まで私が持っているもの:Python csvモジュールを使用して複数行のセルをスペースやその他の文字とマージする

fout = open (tfile, "wt") 
cout = csv.writer(fout, delimiter = '|', quotechar = '', quoting =  csv.QUOTE_NONE, lineterminator = '\n', escapechar='\\') 

cin = csv.reader(fin) 

for row in cin: 
    cout.writerow(row) 

答えて

0

私は私の問題の答えを作り出しました。エスケープ文字としてバックスラッシュを使用する代わりに、 '\ n'を使用して、各行のすべてのフィールドに新しい行を検索して置き換えます。私。

cout = csv.writer(fout, delimiter = '|', quotechar = '', quoting = csv.QUOTE_NONE, lineterminator = '\n', escapechar='\n') 

for row in cin: 
    newrow = row 
    row[:] = [str.replace("\n", " ") for str in row] 
    cout.writerow(newrow) 

見つけて、リストの置き換えはHow to modify list entries during for loop?

への応答に基づいています
関連する問題