比方说,我有一个CSV文件重新排列CSV,删除旧的和重新编写
Name,Age
john,20
ana,30
steven,25
frank,27
怎么样,如果我想将它顺序降序根据“时代”的价值,有一些像这
Name,Age
ana,30
frank,27
steven,25
john,20
,然后删除所有的CSV行和重写他们根据新的订单?
我知道很热从CSV创建哈希并命令它,但不知道如何实现描述的结果。
比方说,我有一个CSV文件重新排列CSV,删除旧的和重新编写
Name,Age
john,20
ana,30
steven,25
frank,27
怎么样,如果我想将它顺序降序根据“时代”的价值,有一些像这
Name,Age
ana,30
frank,27
steven,25
john,20
,然后删除所有的CSV行和重写他们根据新的订单?
我知道很热从CSV创建哈希并命令它,但不知道如何实现描述的结果。
Ruby has a CSV library。您可以使用它来读取,分类和编写CSV文件。 CSV
类是CSV::Table
的包装。 CSV::Table
处理数据本身,而CSV
主要提供从文件读取的能力。
require 'csv'
orig_table = CSV.table("test.csv");
orig_table
是CSV::Table
对象。不幸的是,您不能直接对其行进行排序,但可以将它们排序为CSV::Row
对象的数组,并将其放入新的CSV::Table
中。
sorted_rows = orig_table.sort { |a,b| b[:age] <=> a[:age] }
sorted_table = CSV::Table.new(sorted_rows)
然后你就可以得到一个CSV串出的与to_csv
并把它写回文件。
File.open("test.csv", "w").write(sorted_table.to_csv)
http://stackoverflow.com/questions/37786098/ruby-csvtable-sort-in-place#37786671可能有助于 – Schwern