2016-05-11 19 views
0
def c(): 
    csvfile = 'example.csv' 
    with open(csvfile, 'r') as fin, open('new_'+csvfile, 'w') as fout: 
     reader = csv.reader(fin, newline='', lineterminator='\n') 
     writer = csv.writer(fout, newline='', lineterminator='\n') 
     if you_have_headers: 
      writer.writerow(next(reader) + [new_heading]) 
     for row, val in zip(reader, data): 
      writer.writerow(row + [data]) 

以上、CSVファイルの列を作成するために使用したコードです。次のエラーが発生する場合があります。PythonでCSVを使用するときに無効なキーワード

TypeError: 'newline' is an invalid keyword argument for this function 

どうすればこの問題を解決できますか?前もって感謝します。

+1

'です '[ドキュメント](https://docs.python.org/3/library/csv.html)'改行=' への参照のみを見てみましょうファイルを開くときに –

+0

だから 'open '(csvfile、' r '、newline =' ')..で' newline =' ''を使ってみたいです。 –

+0

ありがとう!それはそれを修正した。 –

答えて

5

引数は、open関数内に含める必要があり、csv readerおよびwriter関数内に含めるべきではありません。

たとえば、hereを参照してください。

+0

まずは、助けてくれてありがとう。それは正常に働いた。私はもう一つ質問があります。私は本質的にこれを除いて2つの余分な列を追加するこの2つのコピーをもう1つ持っています。コードを実行すると、後のコードは前のコードよりも優先されます。それらはすべて同じ場所に列を作成します。 1つの列を他の列の後に作成させるにはどうすればよいのですか? –

+0

@ NasifRobあなたは正確に何をしようとしていますか? –

+0

ようこそ@NasifRob。しかし、他の問題のために新しい質問を作成してください。コメントセクションのみを使うのはとても簡単ではありません –

1

このエラーを回避するには、ファイルを 'w'モードではなく 'wb'モードで開きます。 これにより、改行= ""、 の必要性がなくなります。修正されたコードの下を見てください。

def c(): 
 
    csvfile = 'example.csv' 
 
    with open(csvfile, 'r') as fin, open('new_'+csvfile, 'wb') as fout: 
 
     reader = csv.reader(fin, newline='', lineterminator='\n') 
 
     writer = csv.writer(fout, lineterminator='\n') 
 
     if you_have_headers: 
 
      writer.writerow(next(reader) + [new_heading]) 
 
     for row, val in zip(reader, data): 
 
      writer.writerow(row + [data])

関連する問題