我正在使用 Ruby 的 CSV 库来解析一些 CSV。我有一个看似格式正确的 CSV 文件,它是通过将 Excel 文件导出为 CSV 创建的。
但是 CSV.open(filename, 'r')
会导致 CSV::IllegalFormatError
。
文件中没有恶意逗号或引号,也没有我认为可能会导致问题的任何其他内容。
我怀疑问题可能与行结尾有关。我能够解析通过文本编辑器 (Aquamacs) 手动输入的数据。就在我尝试使用从 Excel(适用于 OS X)导出的数据时出现问题。当我在 vim 中打开导出的 CSV 文件时,所有文本都显示在一行中,行与行之间出现 ^M
。
从文档来看,您似乎可以为 open
提供行分隔符;但是我不确定在这种情况下应该是什么。
最佳答案
尝试:CSV.open('文件名', 'r', ?,, ?\r)
作为cantlin注意,对于 Ruby 2,它是:
CSV.new('file.csv', 'r', :col_sep => ?,, :row_sep => ?\r)
我很确定这些会为您带来 DTRT。您还可以使用以下 vim
命令“修复”文件本身(在这种情况下保持旧的 打开
)::%s/\r/\r/g
是的,我知道该命令看起来完全没有操作,但它会起作用。
关于Ruby:无法解析在 OS X 中导出为 CSV 的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1549139/