2016-12-28 35 views
1

我在讀取ruby中的.csv文件時遇到問題。使用CR/CL/LF讀取文件時出現Ruby CSV格式錯誤

文件格式,我得到的文件是:

UTF-8 Unicode text, with CR, LF line terminators 

的錯誤我得到的是這樣的:

/usr/local/lib/ruby/1.8/csv.rb:607:in `get_row': CSV::IllegalFormatError (CSV::IllegalFormatError) 

我試着將文件轉換爲

UTF-8 Unicode text, with CRLF, CR line terminators 

沒有變化。

轉換爲ASCII會得到相同的結果。

有沒有人有這方面的經驗,並可以提供解決方案?

編輯: 由於要求CSV

670|FirstDataaset|Uppertreet 5|GB|1000|Blue|98764-6547|0374-453534|HU-0973409745|[email protected] 

這不是數據,我檢查通過複製粘貼到一個新的文件,並使用一個測試文件(不是一種可行的選擇的樣品線作爲解決方案,只是爲了確認數據不是問題)

+0

你有幾行CSV的例子?它也可能是由未封閉的報價引起的。 –

回答

0

您是否指定了自定義列分隔符|

string = "670|FirstDataaset|Uppertreet 5|GB|1000|Blue|98764-6547|0374-453534|HU-0973409745|[email protected]" 

require 'csv' 

p CSV.parse(string, :col_sep => "|") 
# => [["670", "FirstDataaset", "Uppertreet 5", "GB", "1000", "Blue", "98764-6547", "0374-453534", "HU-0973409745", "[email protected]"]] 
+0

是的,我已經做到了。我用測試文件運行的測試沒有任何問題。 – Uhraya

+0

可以請上傳幾行,使用與問題文件完全相同的編碼和換行符? –

0

既然是你試圖打開一個文件,你可以做到這一點

CSV.foreach(file_path,:col_sep => '|') do |row| 
    # whatever you wanna do 
end