Tecnica Python o semplice sistema di template per output di testo normale


1 Answers

È possibile utilizzare il modello di stringa di libreria standard:

Quindi hai un file foo.txt con

$title
...
$subtitle
...
$list

e un dizionario

d={ 'title':title, 'subtitle':subtitle, 'list':'\n'.join(list) }

Quindi è abbastanza semplice

from string import Template
#open the file
filein = open( 'foo.txt' )
#read it
src = Template( filein.read() )
#do the substitution
src.substitute(d)

Quindi puoi stampare src

Ovviamente, come ha detto Jammon, hai molti altri buoni motori di template (dipende da cosa vuoi fare ... il template standard è probabilmente il più semplice)

Pieno esempio di lavoro

foo.txt

$title
...
$subtitle
...
$list

example.py

from string import Template
#open the file
filein = open( 'foo.txt' )
#read it
src = Template( filein.read() )
#document data
title = "This is the title"
subtitle = "And this is the subtitle"
list = ['first', 'second', 'third']
d={ 'title':title, 'subtitle':subtitle, 'list':'\n'.join(list) }
#do the substitution
result = src.substitute(d)
print result

Quindi esegui example.py

$ python example.py
This is the title
...
And this is the subtitle
...
first
second
third
Question

Sto cercando una tecnica o un sistema di template per Python per la formattazione di output in testo semplice. Quello che chiedo è che sarà in grado di scorrere attraverso più elenchi o dict. Sarebbe bello se potessi definire il modello in un file separato (come output.templ) invece di codificarlo nel codice sorgente.

Come semplice esempio di ciò che voglio ottenere, abbiamo variabili title , subtitle e list

title = 'foo'
subtitle = 'bar'
list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

E passando attraverso un modello, l'output sarebbe simile a questo:

Foo
Bar

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Come fare questo? Grazie.




Non so se sia semplice, ma il Cheetah potrebbe essere d'aiuto.




Related