2012-04-07 9 views
1

私はハッシュ値をすべて保存するような1列のCSVを持っています。私はnokogiriサックスを使用してXML文書を解析し、それをCSVに保存しています。私はこのようなXML値を取得しています:私は、キーをループするために、今、このコードを使用してCSVに保存する場合ハッシュ値をCSVに保存する方法

@infodata = {} 
@infodata[:titles] = Array.new([]) 
@infodata[:identifier] 
@infodata[:typeOfLevel] 
@infodata[:typeOfResponsibleBody] 
@infodata[:type] 
@infodata[:exact] 
@infodata[:degree] 
@infodata[:academic] 
@infodata[:code] 
@infodata[:text] 

@infodata[:academic] = @content.inspectハッシュは、以下のキーを持っている

def end_document 
CSV.open("info.csv", "wb") do |row| 
    for key, val in @infodata 
    row << [val,] 
    end 
end 
puts "Finished..."  
end 

私が手出力は次のようになります。

私はこのような出力を得るにはどうすればよい
"""avancerad""" 
"""Ingen examen""" 
"""uh""" 
"""Arkivvetenskap""""Archival science""" 
"""HIA80D""" 
"""10.300""" 
"""uoh""" 
"""Arkivvetenskap rör villkoren för befintliga arkiv och modern arkivbildning med fokus på arkivarieyrkets arbetsuppgifter: bevara, tillgängliggöra och styra information. Under ett år behandlas bl a informations- och dokumenthantering, arkivredovisning, gallring, lagstiftning och arkivteori. I kursen ingår praktik, där man under handledning får arbeta med olika arkivarieuppgifter.""" 
"""statlig""" 
"""60""" 

"avancerad", "Ingen examen", "uh", "Arkivvetenskap", "Archival science", "HIA80D", 10.300,"uoh", "Arkivvetenskap rör villkoren för befintliga arkiv och modern arkivbildning med fokus på arkivarieyrkets arbetsuppgifter: bevara, tillgängliggöra och styra information. Under ett år behandlas bl a informations- och dokumenthantering, arkivredovisning, gallring, lagstiftning och arkivteori. I kursen ingår praktik, där man under handledning får arbeta med olika arkivarieuppgifter.", "statlig", 60 
+0

「右」とは何ですか。あなたが望む出力は何ですか? – Phrogz

+0

edit @Phrogzを確認してください – SHUMAcupcake

答えて

0

ちょうど2つの配列の値を取り、togheterそれらを結合についての協議を@joelparkerhenderson参加する方法。

あなたはこのような新しい配列を分離し、作成するためにflattenを使用することができます。

# Open the CSV for writing 
CSV.open("info.csv", "wb") do |csv| 
    # Write the entire row all at once 
    csv << @infodata.values.flatten 
end 

もっと読む時:http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-flatten

2

私は私はあなたの一般的な質問を理解だと思うので、おそらくこれはあなたを助けることができる:

# Flatten the titles Array into one String 
@infodata[:titles] = @infodata[:titles].join(", ") 

# Open the CSV for writing 
CSV.open("info.csv", "wb") do |csv| 
    # Write the entire row all at once 
    csv << @infodata.values 
end 
+0

ヘッダを保存するためにファイルを開いた後、 'csv << @ infodata.keys'を直接追加したいかもしれません。 – Jakobinsky

+0

@joelparkerhendersonここをクリックしてコード全体を確認してください:https://gist.github.com/2328752。私はコンストラクタでハッシュを平坦化する必要がありますか? – SHUMAcupcake

+0

私は今あなたが答えていることを理解していますが、問題はそこにあるとは思っていません。 – SHUMAcupcake

関連する問題