Je voudrais mapper un hachage à une ligne CSV.
J'ai quelques objets dans un hachage: p> Je veux transformer cela en Un fichier CSV avec les touches telles que les colonnes et les valeurs de chaque ligne. P> Je peux facilement créer les en-têtes en créant un Je ne peux pas compter sur la commande et plus importants, toutes les valeurs ne sont pas remplies tout le temps. p> mais quand j'essaie maintenant d'ajouter des lignes à la table via Pour démontrer cela, j'ai écrit ce petit script: p> Je m'attendrais à ce résultat: P > au contraire les valeurs dans la commande comme elles apparaissent. Donc, la sortie est la suivante: p> CSV :: rangée code> comme ceci: p> xxx pré> et matrice, la cartographie des en-têtes est ignorée. Il doit être dans le bon ordre. P> puts "favorite_bands: #{t['favorite_band']}"
> favorite_bands: [nil, "Backstreet Boys", nil]
3 Réponses :
Vous pouvez simplement itérer sur les noms de colonne
cela ne résoudra pas le problème. La commande est toujours imprévisible et les valeurs nules sont ignorées.
La commande serait exactement comme définie dans all_keys_as_array code>
Vous pouvez résoudre le problème de la valeur nul en ajoutant quelque chose comme personne [clé]? personne [clé]: '' code>
Je ne pense pas que la commande soit imprévisible avec la solution de @ Benjaminudinktencate, ce sera l'ordre du tableau des clés qui est exactement ce que vous voulez si je reçois ce droit.
Vous pouvez simplement utiliser #to_csv code> et distribuer avec tous les CSV :: ligne code> et CSV :: Table Code> Stuff: < Pré> xxx pré> p>
Bien, mais vous vous manquez sur tout le sucre de CSV en utilisant fichier code>. Essayez csv.open code> et f << têtes code> à la place.
Les suggestions actuelles fonctionnent, alors merci pour cela.
Cependant, je suis tombé sur une solution plus élégante en utilisant csv :: rangée # champs . p>
alors je peux simplement convertir la ligne CSV en Le tableau correct avant de l'ajouter à la table: p>
Où dans votre script de démonstration est utilisé? Je ne peux pas obtenir ça pour travailler.
Vous remplacez «T << R» avec la ligne que j'ai mentionnée, elle convertira la ligne en une matrice dans le bon ordre. Je viens de le tester à nouveau et ça marche.