Il est assez facile de lire un fichier CSV dans un tableau avec Ruby mais je ne trouve aucune bonne documentation sur la façon d'écrire un tableau dans un fichier CSV. Quelqu'un peut-il me dire comment faire cela?
J'utilise Ruby 1.9.2 si cela compte.
Réponses:
Vers un fichier:
À une chaîne:
Voici la documentation actuelle sur CSV: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
la source
J'ai ceci à une seule ligne.
Faites tout ce qui précède et enregistrez-le dans un csv, sur une seule ligne.
REMARQUE:
Pour convertir une base de données d'enregistrement active en csv, ce serait quelque chose comme ça, je pense
Hmm @tamouse, cet élément est quelque peu déroutant pour moi sans lire la source csv, mais de manière générique, en supposant que chaque hachage de votre tableau a le même nombre de paires k / v et que les clés sont toujours les mêmes, dans le même ordre (ie si vos données sont structurées), cela devrait faire l'acte:
Si vos données ne sont pas structurées, cela ne fonctionnera évidemment pas
la source
inject
ici, vous voulez vraiment utilisermap
. De plus, vous n'avez pas besoin de passer une chaîne vide àjoin
, car c'est la valeur par défaut. Vous pouvez donc le réduire encore plus à ceci:rows.map(&CSV.method(:generate_line).join
CSV.generate(headers: hsh.first&.keys) { |csv| hsh.each { |e| csv << e } }
génère un CSV équivalent.Si vous disposez d'un tableau de tableaux de données:
Ensuite, vous pouvez écrire ceci dans un fichier avec ce qui suit, ce qui, je pense, est beaucoup plus simple:
la source
Si quelqu'un est intéressé, voici quelques one-liners (et une note sur la perte d'informations de type en CSV):
Remarque: CSV perd toutes les informations de type, vous pouvez utiliser JSON pour conserver les informations de type de base, ou passer à YAML détaillé (mais plus facilement modifiable par l'homme) pour conserver toutes les informations de type - par exemple, si vous avez besoin d'un type de date, qui deviendrait chaînes en CSV et JSON.
la source
En me basant sur la réponse de @ boulder_ruby, c'est ce que je recherche, en supposant qu'il
us_eco
contienne la table CSV à partir de mon essence.Mise à jour de l'essentiel à https://gist.github.com/tamouse/4647196
la source
J'ai du mal avec ça moi-même. Voici ma prise:
https://gist.github.com/2639448 :
la source
[ %w(your array), %w(goes here) ]
ne sera pas joli. github.com/pry/pry/issues/568