私は Ruby を初めて使用し、簡単な答えがあると思われる問題に取り組んできました。2 つの CSV ファイルがあり、1 つは 2 列で、もう 1 つは 1 列です。単一の列は、最初のファイルの 1 つの列に存在する値のサブセットです。例:
ファイル1.csv:
abc,123
def,456
ghi,789
jkl,012
file2.csv:
def
jkl
必要なのは、file2 の各値に対して file1 の列 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
...しかし、もっと良い方法が必要です。誰かがよりエレガントなソリューションを持っている場合、私は非常に感謝しています! (最終的には何百万行ものファイルでこれを実行する必要があるため、速度が問題になることにも注意してください。)