2017-04-18 98 views
0

當我嘗試讀取一個上傳的csv文件,其中一個字段包含'\ n'字符時遇到問題。例如我有一個CSV文件,其內容如下:django - 如何讀取上傳的csv文件,其中一個字段包含' n'

  • 第1行: 「一」, 「這是\ NSample個」
  • 行2: 「兩節」, 「這也是\ NSample個」

我可以成功上傳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"。在第二個循環中,變量'line'獲得值「sample」。但我想要的是「one」,這是\ nsample「'。 任何幫助都很感激,在此先感謝。

回答

0

您沒有正確使用csv.reader。用它來代替文件讀取器(文件線線線

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

使用csv.reader來csvfile直接讀取,會彈出錯誤「迭代器應該返回字符串,而不是字節(你打開文件在文本模式?)「 –

+0

然後讓迭代器返回字符串。由於Django InMemoryUploadedFile返回字節,而不是字符串,所以csv閱讀器沒有針對這種情況進行適當的定義。你需要做一些像'f = csv.reader((x.decode('latin1')for csvfile.readlines()))'將行轉換爲字符串。 – Ivan

相關問題