2012-04-07 2 views
-3

J'ai ce hachage: @infodata[:titles] = Array.new([]). Je stocke des valeurs dessus alors je suis j'essaye d'aller chercher la valeur.comment obtenir un tableau dans un hachage

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

C'est ce qu'il ressemble à l'intérieur de la "machine"

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

Puis, dans la deuxième partie de mon code, je sauvegarde dans un fichier CSV, comme ceci:

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

Le la sortie que j'obtiens est la suivante:

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 

La sortie que JE VEUX est la suivante:

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 

Comment séparer la valeur des deux tableaux. Et si vous aimez voir le code de trou: https://gist.github.com/2328752

+0

@infodata [: titres] = @infodata [:] titres .join ("") – SHUMAcupcake

+0

Pourquoi vous appelez 'join' sur le tableau si ce n'est pas ce que vous voulez faire? Et pourquoi l'attribuez-vous au hachage? –

+0

Beacuse Je prends chaque valeur de ce hachage et l'enregistre dans un fichier CSV. Et si je n'utilise pas de jointure, l'élément de deux tableaux va être togehter et j'ai besoin de les séparer. – SHUMAcupcake

Répondre

0

Si vous avez un tableau dans un hachage et que vous voulez stocker ou de sortie .. ou autre chose. Vous pouvez l'aplatir et cela signifie qu'il retourne un nouveau tableau qui est un aplatissement unidimensionnel de ce hachage. C'est-à-dire, pour chaque clé ou valeur qui est un tableau, extrayez ses éléments dans le nouveau tableau.

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

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

Si vous voulez un exemple:

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

qui ne fonctionne pas. – SHUMAcupcake

+0

Avez-vous remplacé 'index' par l'index réel du tableau que vous souhaitez obtenir? –

+0

S'il vous plaît vérifier le code entier dans gist: https://gist.github.com/2328752 – SHUMAcupcake

Questions connexes