我正在尝试对CSV文件进行排序。
我从文件中读取数据并将其存储到哈希:
somecsv = 'somecsv.csv'
CSV_Hash = {}
CSV.foreach(somecsv) do |col1, col2, col3|
CSV_Hash[col1] = col2, col3
end
然后我做了一些排序,并希望将数据写回CSV文件:
CSV.open('somecsv2.csv', "wb") do |csv|
CSV_Hash.each do |row|
csv << row
end
end
示例数据是:
Filename REG1 REG2
zFile.exe A E
bFile.exe B F
aFile.exe C G
我的预期输出是:
Filename REG1 REG2
aFile.exe C G
bFile.exe B F
zFile.exe A E
实际输出是:
Filename ["REG1, REG2"]
aFile.exe ["C, G"]
bFile.exe ["B, F"]
zFile.exe ["A, E"]
当我只有两列时,我的代码工作正常,我理解为什么它不适用于第三列。我只是不知道在哪里可以分开第三栏。
如果这有帮助,这就是输出到控制台时哈希的样子:
{"Filename"=>["REG1", "REG2"], "aFile.exe"=>["C", "G"], "bFile.exe"=>["B", "F"], "zFile.exe"=>["A", "E"]}
答案 0 :(得分:2)
CSV编写器需要一个扁平数组,而不是元组string => array
:
- csv << row
+ csv << row.flatten
希望它有所帮助。