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

标签 ruby macos csv

我正在使用 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/

相关文章:

macos - 重新打开终端窗口后,更改节点版本为 "nvm use <version>"未更改

macos - macOS 上的 wget 如何处理证书?

java - 从 JFileChooser 创建 ArrayList 而不是硬编码选项

python - Pandas 数据帧到 CSV

csv - 是否可以从CSV列的特定子集创建配置单元表?

ruby - Ruby 在哪里跟踪其打开的文件描述符?

ruby-on-rails - Sidekiq + Sidetiq 每 2 小时重复一次?

ruby 调试 : print line number when taking too long

jquery - ExecJS::RuntimeError:语法错误:意外的标记:运算符 (<)

macos - OSX lion 上 OpenCV 2.4 中经过训练的 LBP 级联错误