使用自定义占位符进行字符串格式化的Python库

时间:2011-08-13 12:15:37

标签: python string-formatting string-interpolation

我正在搜索一个Python库,用于使用自定义占位符进行字符串格式化。我的意思是我希望能够定义一个像"%f %d %3c"这样的字符串,其中例如%f将被替换为一些文件名%d,其目录名称为%3c带有三位数的计数器。或者其他的东西。它不一定是印刷品,但如果它会是伟大的。所以我希望能够定义每个字母的含义,字符串或数字,以及一些格式(如数字位数)数据。

这个想法是用户可以指定格式,然后我用数据填写它。就像datefmt一样。但对于定制的东西。

是否有类似于Python的内容(2.5+,遗憾的是不适用于2.7和3及其__format__)?

1 个答案:

答案 0 :(得分:2)

string.Template,但它没有提供您想要的内容:

>>> from string import Template
>>> t = Template("$filename $directory $counter")
>>> t.substitute(filename="file.py", directory="/home", counter=42)
'file.py /home 42'
>>> t.substitute(filename="file2.conf", directory="/etc", counter=8)
'file2.conf /etc 8'

文档:http://docs.python.org/library/string.html#template-strings

但我认为这可以满足您的需求。只需指定一个模板字符串并使用:

>>> template = "%(filename)s %(directory)s %(counter)03d"
>>> template % {"filename": "file", "directory": "dir", "counter": 42}
'file dir 042'
>>> template % {"filename": "file2", "directory": "dir2", "counter": 5}
'file2 dir2 005'