Is there a native templating system for plain text files in Python? Is there a native templating system for plain text files in Python? python python

Is there a native templating system for plain text files in Python?


You can use the standard library string an its Template class.

Having a file foo.txt:

$title$subtitle$list

And the processing of the file (example.py):

from string import Templated = {    'title': 'This is the title',    'subtitle': 'And this is the subtitle',    'list': '\n'.join(['first', 'second', 'third'])}with open('foo.txt', 'r') as f:    src = Template(f.read())    result = src.substitute(d)    print(result)

Then run it:

$ python example.pyThis is the titleAnd this is the subtitlefirstsecondthird


There are quite a number of template engines for python: Jinja, Cheetah, Genshi etc. You won't make a mistake with any of them.


If your prefer to use something shipped with the standard library, take a look at the format string syntax. By default it is not able to format lists like in your output example, but you can handle this with a custom Formatter which overrides the convert_field method.

Supposed your custom formatter cf uses the conversion code l to format lists, this should produce your given example output:

cf.format("{title}\n{subtitle}\n\n{list!l}", title=title, subtitle=sibtitle, list=list)

Alternatively you could preformat your list using "\n".join(list) and then pass this to your normal template string.