我正在研究一种方法来获取一个csv文件(带有头)并使用rubyCSV.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_csvgem/解析器。它可以忽略输入中的“列”(删除列)https://github.com/tilo/smarter_csv

09-27 11:30