CSV dans hachage
J'ai un fichier csv avec la première colonne d'une étiquette suivie de valeurs séparées par des virgules:
LabelA,45,56,78,90
LabelB,56,65,43,32
LabelC,56,87,98,45
J'aimerais que la première colonne (LabelA etc) à la Clé dans une table de hachage avec les valeurs numériques dans un tableau.
Je peux lire le fichier dans un tableau ou un scalaire, mais je ne suis pas sûre de savoir quoi faire après. Des Suggestions??
Edit:
Ok, donc il semble que cela affecte la valeur à une clé ..mais qu'en est délimité par des virgules, les numéros dans mon exemple? Où vont-ils? Sont-ils en %de hachage ? Si oui, pourriez-vous abrutir votre explication encore plus loin? Merci.
depesz est la création d'une table de Hachage de Tableaux. Essayez de lire le perldsc lien que je vous ai donné. C'est le "Structures de Données" livres de cuisine, et il y a une section sur le travail avec des tables de hachage de Tableaux, que j'ai aussi lié pour vous dans mon post. La section sur la Génération de HoA a un exemple qui est très similaire à ce que vous demandez.
OriginalL'auteur RH. | 2009-06-18
Vous devez vous connecter pour publier un commentaire.
Eh bien, supposons qu'il n'existe pas de caractères spéciaux et ainsi de suite.
D'abord d'ouvrir le fichier:
Puis vous lire en boucle:
Par la suite, vous la retirez de fuite des caractères blancs (\n et les autres):
Et de le diviser en tableau:
Quand il est dans la gamme, vous obtenez un premier élément hors de la matrice:
Et de le stocker dans de hachage:
(\@tableau fait référence à la matrice).
Code entier:
Eh bien, cette ligne: $hash{$key} = \@tableau; met les valeurs de hachage. Vous pouvez ajouter: utiliser Data::Dumper; print Dumper(\%hash); à la fin du programme pour voir comment la structure de données des regards.
Remarque à quelqu'un d'autre à l'aide de cette méthode: une ligne vide dans l'entrée CSV entraînera une paire clé/valeur de
'' => undef
. Pas de la faute de cette méthode, cela a un sens dans le contexte de ce code, juste quelque chose d'être conscient de, par exemple, si vous utilisez un fichier Excel CSV fichier qui a quelques lacunes en ligne (les lignes vides).OriginalL'auteur
Personnellement, j'aime le Texte::CSV_XS et IO::File module:
OriginalL'auteur Todd Gardner
Voir perlfunc split et perldsc.
Faire un hachage de références de tableau:
Votre structure de données devrait ressembler à ceci:
OriginalL'auteur daotoad
Text::CSV::Hashify
Tour d'un fichier CSV dans un Perl hash:
OriginalL'auteur Pablo Bianchi
Je pense que cela peut aussi faciliter le travail.
$Refhashvariable sera une référence à un tableau de hachages.
Chaque hash contient les en-têtes (comme hashkey) et les valeurs d'un CSV ligne.
Le tableau contient les valeurs de hachage pour toutes les lignes du fichier CSV.
Cela fonctionne pour moi. Je n'ai pas essayé en cas le CSV n'a pas les en-têtes.
OriginalL'auteur Joniale