我是 Ruby 新手,我一直在努力解决一个我怀疑答案很简单的问题。我有两个 CSV 文件,一个有两列,一个有单列。单列是我的第一个文件的一列中存在的值的子集。例子:
文件 1.csv:
abc,123
def,456
ghi,789
jkl,012
文件 2.csv:
def
jkl
我需要做的就是在 file1 中为 file2 中的每个值查找第 2 列的值,并将结果输出到单独的文件中。所以在这种情况下,我的输出文件应该包括:
456
012
我的工作方式是这样的:
pairs=IO.readlines("file1.csv").map { |columns| columns.split(',') }
f1 =[]
pairs.each do |x| f1.push(x[0]) end
f2 = IO.readlines("file2.csv").map(&:chomp)
collection={}
pairs.each do |x| collection[x[0]]=x[1] end
f=File.open("outputfile.txt","w")
f2.each do |col1,col2| f.puts collection[col1] end
f.close
...但必须有更好的方法。如果有人有更优雅的解决方案,我将不胜感激!(我还应该注意,我最终需要在数百万行的文件上运行它,所以速度将是一个问题。)