【发布时间】:2011-08-23 04:42:29
【问题描述】:
我正在尝试打开一个 CSV 文件,查找一个字符串,然后返回 csv 文件的第二列,但只返回它的第一个实例。我已经做到了以下几点,但不幸的是,它返回了每个实例。我有点不知所措。
鲁比之神能帮忙吗?非常感谢。
M
就本示例而言,假设 names.csv 是一个包含以下内容的文件:
foo, happy
foo, sad
bar, tired
foo, hungry
foo, bad
#!/usr/local/bin/ruby -w
require 'rubygems'
require 'fastercsv'
require 'pp'
FasterCSV.open('newfile.csv', 'w') do |output|
FasterCSV.foreach('names.csv') do |lookup|
index_PL = lookup.index('foo')
if index_PL
output << lookup[2]
end
end
end
好的,所以,如果我想返回 foo 的所有实例,但在 csv 中,那么它是如何工作的? 所以我想要的结果是快乐、悲伤、饥饿、糟糕。我以为会是:
FasterCSV.open('newfile.csv', 'w') do |output|
FasterCSV.foreach('names.csv') do |lookup|
index_PL = lookup.index('foo')
if index_PL
build_str << "," << lookup[2]
end
output << build_str
end
end
但它似乎不起作用
【问题讨论】:
-
您考虑过只使用
grep和cut吗?例如grep 'foo' | cut -d, -f2 -
'foo' 是改变还是静态的?,你能粘贴一个 names.csv 的示例 sn-p
-
是的,已经考虑过 grep + cut 但它是更大程序的一部分。此外, foo 确实会被一个不断变化的变量替换,但出于此目的,我们可以假设它只是字符串 foo。 (谢谢)