比方說,我有一個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