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

后端 未结 4 591
盖世英雄少女心
盖世英雄少女心 2020-11-30 18:20

I am looking for either technique or templating system for Python for formatting output to simple text. What I require is that it will be able to iterate through multiple li

相关标签:
4条回答
  • 2020-11-30 19:04

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

    0 讨论(0)
  • 2020-11-30 19:19

    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 Template
    
    d = {
        '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.py
    This is the title
    And this is the subtitle
    first
    second
    third
    
    0 讨论(0)
  • 2020-11-30 19:23

    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.

    0 讨论(0)
  • 2020-11-30 19:26

    I don't know if it is simple, but Cheetah might be of help.

    0 讨论(0)
提交回复
热议问题