1

我有一个包含一列的 CSV,我喜欢在上面保存我的所有哈希值。我正在使用 nokogiri sax 解析 xml 文档,然后将其保存到 CSV。我得到这样的 xml 值:@infodata[:academic] = @content.inspect哈希有以下键:

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

当我现在使用此代码循环键并将其保存到 CSV 时:

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
4

2 回答 2

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
于 2012-04-07T13:01:58.270 回答
0

@joelparkerhenderson 谈到的 join 方法只是采用两个数组值并将它们连接在一起。

您可以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

于 2012-04-08T22:38:23.293 回答