Ruby:无法解析在OS X中导出为CSV的Excel文件

gri*_*ton 11 ruby csv macos

我正在使用Ruby的CSV库来解析一些CSV.我有一个看似格式正确的CSV文件,我通过将Excel文件导出为CSV来创建.

然而CSV.open(filename, 'r')导致一个CSV::IllegalFormatError.

文件中没有流氓逗号或引号,也没有任何我可以看到可能导致问题的内容.

我怀疑这个问题可能与行结尾有关.我能够解析通过文本编辑器(Aquamacs)手动输入的数据.就在我尝试从Excel(OS X)导出的数据时,会出现问题.当我在vim中打开导出的CSV时,所有文本都显示在一行上,并^M显示在行之间.

从文档中,似乎可以提供open行分隔符; 但我不确定在这种情况下应该是什么.

Dig*_*oss 35

尝试: CSV.open('filename', 'r', ?,, ?\r)

正如cantlin所说,对于Ruby 2来说,它是:

CSV.new('file.csv', 'r', :col_sep => ?,, :row_sep => ?\r)
Run Code Online (Sandbox Code Playgroud)

我很确定这些会为你DTRT.您还可以open使用以下vim命令"修复"文件本身(在这种情况下保留旧文件)::%s/\r/\r/g

是的,我知道这个命令看起来像一个完全没有操作,但它会起作用.


Bri*_*ong 5

剥离\ r字符似乎对我有用

CSV.parse(File.read('filename').gsub(/\r/, ' ')) do |row|
  ...
end
Run Code Online (Sandbox Code Playgroud)