2016-12-14 11 views
0

書いたファイルに'\n'と表示される行データ(空白行として表示される)に改行が入るように、次のコードを再定義する必要があります。Pythonを使ってcsvに改行を ' n'として書く方法はありますか?

ただし、空行として表示するには、各行の後に'\n'を書き込む必要があります。

各行は、明らかにエラーを避けるために 'utf-8'としてエンコードする必要があります。

with open('csvfile.csv', 'w') as csvOutput: 
    testData = csv.writer(csvOutput, delimiter='|', escapechar=' ', quoting=csv.QUOTE_NONE) 

    for row in data: 
     newRow = [row[x].encode('utf-8') for x in xrange(len(row))] 
     testData.writerow(newRow) 
     testData.writerow(['\n']) 
+3

は...'改行はあなたが脱出したい – 101

+0

を 'testData.writerow(「\\ N」)を試してみてください? 'row [x] .replace( '\ n'、 '\\ n')。encode( 'utf-8')'という意味です。あるいは、各行の間にある空の行に 'testData.writerow(['\\ n'])'を意味するエスケープされた改行があるはずですか? – TigerhawkT3

+0

はい、私は@ 101の提案を働いた行内容の改行に置き換えることを試みました。該当する場合は、答えとして書式を設定してください。 – Phillip

答えて

0

私はそれが\は、Pythonでのエスケープ文字であることと関係している推測しています。 \\は実際の\文字列と解釈されます。次のようにだからあなたのコードは次のようになります。

with open('csvfile.csv', 'w') as csvOutput: 

    testData = csv.writer(csvOutput, delimiter='|', escapechar=' ', quoting = csv.QUOTE_NONE) 


    for row in data: 
     newRow = [row[x].encode('utf-8') for x in xrange(len(row))] 
     testData.writerow(newRow) 
     testData.writerow('\\n') #Note the final row with \\ 
1

は、目的の文字列にlineterminatorオプションを設定します。利用可能なその他の情報はthe docsです。あなたは出力ファイルに `\のN 'を取得したい場合

with open('csvfile.csv', 'w') as csvOutput: 
    testData = csv.writer(csvOutput, delimiter='|', escapechar=' ', quoting=csv.QUOTE_NONE, lineterminator='\n') 

    for row in data: 
     testData.writerow(s.replace('\n', '\\n').encode('utf-8') for s in row) 
+1

お返事ありがとうございます。ただし、行データに空白行が残っているように見えます。最初のコメントで誰かが ''\\ n'''を指摘し、行[x] .replace(' \ n '、' \\ n ')。encode(' utf-8 ')'が空白行を正常に置き換えました'\ n'と入力してください – Phillip

+0

改行が_data_自体にある場合は、あなた自身の文字列を文字列\ nと置き換える必要があります。新しい行を生成するときに置換を実行できます。 –

関連する問題