1

ここではちょっとした初心者なので、事前にお詫びします。

複数の列があるCSVファイルを読み込もうとしていますが、ファイル内のどこかに1つの文字列 "foo"が存在するかどうかを確認したいのですが、存在する場合は、文字列を1セル上(同じ行、1列上)で取得します。それをファイルに書き込みます

私のファイル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 に答える