2012-04-07 82 views
-3

我有這個散列:@infodata[:titles] = Array.new([])。我正在存儲一些值,然後我正在嘗試獲取值。如何獲得散列中的陣列

if name == 'title' 
     Hash[@attrs]['xml:lang'] 
     @infodata[:titles] << @content 
     @content = nil 
    end 

這是它看起來像「機器」

:titles => [ 
     [0] "Arkivvetenskap", 
     [1] "Archival science"] 

然後在我的代碼的第二部分,我保存到CSV,像這裏面:

def end_document 
    CSV.open("infodata.csv", "wb") do |csv| 
     csv << @infodata.values 
    end 
end 

的我得到的輸出是這樣的:

avancerad,Ingen examen,uh,ArkivvetenskapArchival 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 

輸出I WANT是這樣的:

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 

如何分開兩個數組的值。 ,如果你喜歡看孔代碼:https://gist.github.com/2328752

+0

@infodata [:標題= @infodata [:標題]。加入( 「」) – SHUMAcupcake 2012-04-07 20:29:00

+0

爲什麼你調用數組'join'如果這不是你想要做什麼?你爲什麼把它分配給哈希? – 2012-04-07 20:32:32

+0

因爲我將該散列的每個值都保存到一個CSV文件中。如果我不使用連接,這兩個數組元素將被刪除,我需要將它們分開。 – SHUMAcupcake 2012-04-07 20:36:05

回答

0

如果你有一個散列的數組,你想存儲或輸出..或什麼的。你可以將它弄平,這意味着它會返回一個新的數組,這個散列是一維平坦的。也就是說,對於數組中的每個鍵或值,將其元素提取到新數組中。

def end_document 
    CSV.open("infodata.csv", "wb") do |csv| 
     csv << @infodata.values.flatten 
    end 
end 
0

Ewwwwww ... @infodata[:titles][index]

如果你想一個例子:

> @infodata[:titles] = %w(abba baba) 
=> ["abba", "baba"] 
> @infodata[:titles][0] 
=> "abba" 
> @infodata[:titles][1] 
=> "baba" 
> @infodata[:titles][0..1] 
=> ["abba", "baba"] 
+0

不起作用。 – SHUMAcupcake 2012-04-07 20:30:14

+0

你是否用你希望得到的數組的實際索引來替換'index'? – 2012-04-07 20:32:49

+0

請檢查gist中的完整代碼:https://gist.github.com/2328752 – SHUMAcupcake 2012-04-07 20:40:49