2016-12-28 31 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