簡體   English   中英

試圖使用FasterCSV獲取列之間的差異

[英]trying to get the delta between columns using FasterCSV

這里有點菜鳥,所以提前道歉。

我正在嘗試讀取具有多個列的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來做我想做的事情我想做,但是在將我的頭撞到牆上一會兒之后,我決定向經驗豐富的人尋求建議。 請幫助?

給定您的輸入文件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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM