ruby-on-rails - Ruby 通过 header 值解析 csv

标签 ruby-on-rails ruby csv

我正在研究一种获取 CSV 文件(带标题)并使用 Ruby CSV.parse 解析它的方法,但我只想保存特定的列。

CSV 看起来像这样:

NAME,SUPERNET_IP,POP_NAME,ADDRESS_BLOCK_START,ADDRESS_BLOCK_END,Service,ISP Service ID,WCC,DUNSID
Retail,186.43.168.0,text1,186.43.168.0,186.43.175.255,XYZ,XYZB00090095,Enabled,227015716
Retail,186.57.80.0,text2,186.57.80.0,186.57.87.255,XYZ,XYXB00090095,Enabled,227015716

我想保留的唯一字段是:

POP_NAME,ADDRESS_BLOCK_START,ADDRESS_BLOCK_END,WCC

有没有办法通过特定的标题名称在 CSV 中进行解析,例如:

mycsv = CSV.parse(csv_data, {:headers => true, (list of headers to keep here) })

此示例假设 csv_data 是由上述示例 CSV 形成的字符串。

作为权宜之计,我只是将 CSV 转换为数组数组,但这并不是我真正想要的。我宁愿将其保留为 CSV 对象。

myreturnedcsv = []
mycsv = CSV.parse(csv_data, {:headers => true, })
mycsv.each do |row|
  myreturnedcsv.push([row[2], row[3], row[4],row[7]])
end

最佳答案

请尝试使用 smarter_csv gem/解析器。这能够忽略输入中的“列”(删除列)https://github.com/tilo/smarter_csv

关于ruby-on-rails - Ruby 通过 header 值解析 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476068/

相关文章:

ruby-on-rails - Active Record 作用域链,忽略连接,如果已经连接

ruby-on-rails - 哪个给我更好的性能 Activerecord find_by 或在哪里?

windows - 在 powershell 中使用不同的分隔符和引号导入 csv

ruby - 在 Ruby 中如何将参数传递给 class << self ?

batch-file - 如何从逗号分隔文件中删除前导零

ruby - 在 ruby​​ 中将 csv 转换为 json

ruby-on-rails - 您会推荐哪种基于 ruby​​ 的论坛软件来集成到现有的 Rails 应用程序中?

Rails 中的 JavaScript 错误

ruby - Sinatra 使用 curl 丢失了部分查询字符串

ruby-on-rails - 在 ruby​​ on Rails 中的 Controller 操作之间共享数据