2017-04-18 4 views
0

'\ n'文字を含むアップロードされたcsvファイルを読み込もうとすると、問題が発生しました。例えばdjango - 1つのフィールドに ' n'が含まれているcsvファイルを読み込む方法

  • 行1: "1" は、 "これは\ nsampleある"、
  • 行2: "2"、 "これもある\ nsample"
  • 私はcsvファイル、このような内容を持っています

私はrequest.FILESでアップロードされたファイルを取得できますが、ファイルをループすると '\ n'文字で行が分割されます。私のコードは次のとおりです。最初のループでは

file = request.FILES.get('filename', None) 
for line in file: 
    if line: 
     line = line.decode("utf-8") 
     fields_set = list(csv.reader([line], skipinitialspace=True))[0] 

、変数「ライン」の内容は次のとおりです。"one, this is"。 2番目のループでは、変数'line 'は値 "sample"を取得します。しかし、私が望むのは、「1つ」を得ることです。これは\ nサンプルです。 ご協力いただきありがとうございます。

答えて

0

あなたはcsv.readerを正しく使用していません。 (イテレータはバイトを、文字列を返すべきではありません」というエラーがポップアップ表示されますcsvfile内で直接読み取るためにファイルリーダー(ファイル行の行の行

csvfile = request.FILES.get('filename', None) 
readCSV = csv.reader(csvfile, delimiter=',') 
for row in readCSV: 
    print(row) 
+0

使用csv.readerの代わりにそれを使用して開くましたテキストモードのファイル?) " –

+0

イテレータが文字列を返します。 Django InMemoryUploadedFileは文字列ではなくバイトを返すため、csvリーダーはこのケースに対して適切に定義されていません。行を文字列に変換するには、 'f = csv.reader((csvfile.readlines()))'の 'xのx.decode( 'latin1')のようなことをする必要があります。 – Ivan

関連する問題