1

这里有点菜鸟,所以提前道歉。

我正在尝试读取具有多列的 CSV 文件,我想查看文件中是否存在一个字符串“foo”,如果存在,则将字符串抓取一个单元格(也就是同一行,一列)然后将其写入文件

我的文件 c.csv:

foo,bar,yip
12,apple,yap
23,orange,yop
foo,tom,yum

所以在这种情况下,我想要一个新的 csv 文件中的“bar”和“tom”。

这是我到目前为止所拥有的:

#!/usr/local/bin/ruby -w

require 'rubygems'
require 'fastercsv'

rows = FasterCSV.read("c.csv")
acolumn = rows.collect{|row| row[0]}

if acolumn.select{|v| v =~ /foo/} == 1
i = 0
for z in i..(acolumn).count
puts rows[1][i]
end

我看过这里https://github.com/circle/fastercsv/blob/master/examples/csv_table.rb但我显然不明白,我最好的猜测是我必须使用 Table 来做我想做,但在我的头撞墙后,我决定向有经验的人寻求建议。请帮忙?

4

1 回答 1

0

给定您的输入文件c.csv

foo,bar,yip
12,apple,yap
23,orange,yop
foo,tom,yum

然后这个脚本:

#!/usr/bin/ruby1.8

require 'fastercsv'

FasterCSV.open('output.csv', 'w') do |output|
  FasterCSV.foreach('c.csv') do |row|
    foo_index = row.index('foo')
    if foo_index
      value_to_the_right_of_foo = row[foo_index + 1]
      output << value_to_the_right_of_foo
    end
  end
end

将创建文件output.csv

bar
tom
于 2011-08-05T21:47:56.940 回答