2011-12-12 9 views
0

私は自分のルビースクリプトに「ハッシュの配列」があり、さまざまな時にcsvファイルに書きたいと思っています。私はこれにFasterCSVを使用できることを知っています。FasterCSVを使用して書き込むフィールドを指定する方法

私の質問は、特定のフィールドを指定する場合はどうなりますか?ハッシュフィルタリングを自分で行わなくても、これをどうすればできますか?理想的には、フィールドリストをFasterCSVに指定し、ハッシュを追加することができます。 FasterCSVは、指定されたフィールドに一致するキーに値をフィルタリングし、残りの処理を行います。

Pythonには、これを行うことができるDictWriterというlibがあります。

+0

どのようにFasterCSVを使用して 'csvファイルにハッシュの配列'を書き出しますか? – Alexis

+0

私はhash.valuesを呼び出します。これは、私のcsvにすべてのキー/値のペアが必要な場合や、すべてのハッシュが同じキーを持っている場合に機能します。私が直面している問題は、値が異なる複数のハッシュがあることですが、すべてのハッシュにはキーの特定のサブセットが含まれています(これらはCSVに書きたいものです)。 – Poul

答えて

3

[OK]を、私はジェームズ(FasterCSVの作者)にご質問をして、ここで彼の答えだ:

あなたはハッシュの配列を持っている場合は、

[{a: 1, b: 2, x: 0}, {a: 2, b: 3}] 

言うそして、あなたが唯一の希望:Aと: bキーを使用すると、次の操作を実行できます。

>> CSV.generate(headers: [:a, :b]) do |csv| 
    | [{a: 1, b: 2, x: 0}, {a: 3, b: 10}].each do |row| 
    |  csv << row 
    | end 
    | end 
=> "1,2\n3,10\n" 

希望します。

関連する問題