2016-12-29 78 views
0

繼承人我的代碼CSV格式不正確的錯誤

task priceupdate: :environment do 
    csvtoopen = open('') 
    csv = CSV.parse(csvtoopen, :headers=>true, quote_char: "\x00") 
    csv.each do |row| 
Stuff to do here 
    end 
    end 

我有一個問題,繼承人的錯誤代碼:

CSV::MalformedCSVError: Unquoted fields do not allow \r or \n (line 28010). 

任何想法,這是爲什麼不跑?

山姆

+2

你是怎麼想出quote_char的?這是零字節,但你的數據顯然有'''引號? – phoet

+0

嗨,我離開它,因爲它是一個錯誤的另一個修復! – samnymr12

回答

0

CSV文件是有效的(但它有一個UTF-8 BOM開始)。

所有字段都被引用,所以您確實需要使用"作爲quote_char

現在解析器認爲你有多行字段,並且因爲它們沒有被引用(與\x00),你會得到一個錯誤。

+0

所以我改變了字符從'\ x00'到''「」'和我得到了這個錯誤'CSV :: MalformedCSVError:第1行非法引用。' – samnymr12

+0

對不起,我的意思是'''''' – samnymr12

+0

@ samnymr12這可能是由於UTF-8 BOM:您的文件以3字節0xef 0xbb 0xbf開頭。因此,您可能需要告訴解析器存在物料清單(或者可能以UTF-8模式打開)。 –