使用CR / CL / LF读取文件时出现Ruby CSV格式错误

时间:2016-12-28 09:05:03

标签: ruby-on-rails ruby csv

我在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|example@example.de

这不是数据,我通过复制将其粘贴到一个新文件中并将其用于测试文件(不是一个可行的选项作为解决方案,只是为了确认数据不是问题)

2 个答案:

答案 0 :(得分:0)

您是否指定了自定义列分隔符string = "670|FirstDataaset|Uppertreet 5|GB|1000|Blue|98764-6547|0374-453534|HU-0973409745|example@example.de" require 'csv' p CSV.parse(string, :col_sep => "|") # => [["670", "FirstDataaset", "Uppertreet 5", "GB", "1000", "Blue", "98764-6547", "0374-453534", "HU-0973409745", "example@example.de"]]

function valueFromGetOrPost($parameter)
{
    $value = ($getValue = filter_input(INPUT_GET, $parameter))
        ? $getValue
        : filter_input(INPUT_POST, $parameter);

    return ($value) ? $value : NULL;
}

答案 1 :(得分:0)

由于您正在尝试打开该文件,因此可以执行此操作

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