如何使用';CSV';然后用Ruby保存新的头文件?

如何使用';CSV';然后用Ruby保存新的头文件?,ruby,csv,Ruby,Csv,我遇到了一个我想要回答的确切问题:“我想知道。” 不幸的是,答案已经过时,因为FasterCSV不再是一个可用的解决方案 下面是示例代码,如下所示: 但是当我尝试在自己的程序中实现推荐的解决方案时,我意识到Ruby不再允许FasterCSV。命令行说: 请切换到Ruby 1.9的标准CSV库。快一点 支持Ruby 1.9的m17n编码引擎 于是我试着从所有写着“FasterCSV”的地方删除“FasterCSV”。除了它给了我: main:Object(NoMethodError)的未定义方法“

我遇到了一个我想要回答的确切问题:“我想知道。”

不幸的是,答案已经过时,因为FasterCSV不再是一个可用的解决方案

下面是示例代码,如下所示:

但是当我尝试在自己的程序中实现推荐的解决方案时,我意识到Ruby不再允许FasterCSV。命令行说:

请切换到Ruby 1.9的标准CSV库。快一点 支持Ruby 1.9的m17n编码引擎

于是我试着从所有写着“FasterCSV”的地方删除“FasterCSV”。除了它给了我:

main:Object(NoMethodError)的未定义方法“change\u headers”


我在这里遗漏了什么?

您正在从主对象调用此
change\u headers
。它是主对象方法吗?不是。我假设它是CSV库的一部分。从您的回答来看,显然不是。也许您可以回答这个问题……如果它在CSV中运行正常,FasterCSV本可以使用的代码?或者有什么不同是的,为了让这段代码完美地工作,只需将
FasterCSV.filter
更改为
CSV.filter
。Ruby 1.9采用了FasterCSV作为其内置的CSV库,因此它们应该是兼容的。好的,这就回答了我的第一个问题。我应该期望内置的CSV库具有与我期望的相同的行为谢谢你,克里斯蒂安!
require 'fastercsv'

input = File.open 'original.csv', 'r'
output = File.open 'modified.csv', 'w'
FasterCSV.filter input, output, :headers => true, :write_headers => true, :return_headers => true do |row|
  change_headers(row) if row.header_row?
end
input.close
output.close