这里有点菜鸟,所以请提前道歉。
我正在尝试读取具有多个列的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来做我想做的事但是在我的头靠在墙上之后有点,我决定向经验丰富的人寻求建议。请帮忙吗?
答案 0 :(得分: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