2009-06-19 4 views
4

J'ai un fichier csv, les données, et un fichier HTML, le modèle .Mise en forme des données de fichier csv avec modèle html

Je veux un script qui créera un fichier html individuel par enregistrement à partir du fichier csv, en utilisant le fichier html comme modèle.

Quelle est la meilleure façon de faire cela dans Ruby? Python? Y a-t-il un outil/une bibliothèque que je peux utiliser pour cela dans les deux langues?

Répondre

4

Ruby a intégré dans la gestion CSV qui devrait rendre assez trivial pour produire des fichiers HTML statiques.
Voir:

En fait, il en va de Python, il est donc vraiment une question de préférence personnelle (ou de celui que vous avez déjà configuré).

+0

Merci pour la partie csv. Mais qu'en est-il de la partie du modèle html? – lamcro

+0

OK. Je viens de trouver que Ruby a déjà un moteur de template. ERB. – lamcro

4

Python avec Jinja2.

import jinja 
import csv 

env= jinja.Environment() 
env.loader= jinja.FileSystemLoader("some/directory") 
template= env.get_template("name") 

rdr= csv.reader(open("some.csv", "r")) 
csv_data = [ row for row in rdr ] 

print template.render(data=csv_data) 

Il se avère que vous pourriez être en mesure de sortir avec simplement passer le rdr directement à Jinja pour déchirants. Si le modèle ressemble à ceci, il fonctionnera avec une grande variété de structures Python, y compris un itérateur.

<table> 
{% for row in data %} 
<tr> 
    <td>{{ row.0 }}</td><td>{{ row.1 }}</td> 
</tr> 
{% endfor %} 
</table> 
+1

Si le fichier CSV comporte une ligne d'en-tête, vous pouvez utiliser csv.DictReader() à la place de csv.reader comme ceci: print template.render (rows = csv.DictReader (csv_file)), avec des variables de modèle comme ceci: {{ row ['Nom de famille']}} – tobych

Questions connexes