Can Rails可以对CSV文件进行排序吗?

时间:2015-07-13 14:58:12

标签: ruby-on-rails sorting csv

我正在从许多不同来源导出CSV,这使得在将其放入CSV之前很难进行排序。

csv = CSV.generate col_sep: '#' do |csv|
  ... adding a few columns here
end

现在,如果我能够通过第二列对此CSV进行排序,那将是非常棒的。这有可能吗?

2 个答案:

答案 0 :(得分:4)

如果您在写作之前尝试排序,则取决于您的数据结构,我需要更多地查看您的代码。对于读取csv,您可以将其转换为哈希并按标题名称排序:

rows = []
CSV.foreach('mycsvfile.csv', headers: true) do |row|
  rows << row.to_h
end

rows.sort_by{ |row| row['last_name'] }

编辑以使用sort_by,感谢max williams。

答案 1 :(得分:0)

以下是按列号排序的方式:

rows = []
CSV.foreach('mycsvfile.csv', headers: true) do |row|
  # collect each row as an array of values only
  rows << row.to_h.values
end

# sort in place by the 2nd column
rows.sort_by! { |row| row[1] }

rows.each do |row|
  # do stuff with your now sorted rows
end