2

我正在寻找一个 Python 库,用于使用自定义占位符进行字符串格式化。我的意思是,我希望能够定义一个字符串,例如"%f %d %3c"where%f将被替换为某个文件名、%d目录名和%3c一个三位数的计数器。或者其他的东西。它不必是类似 printf 的,但如果可以的话,那就太好了。所以我希望能够定义每个字母的含义,是字符串还是数字,以及一些格式(如位数)数据。

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

是否已经为 Python 制作了类似的东西(2.5+,遗憾的是不是 2.7 和 3 及其__format__)?

4

1 回答 1

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'
于 2011-08-13T12:27:34.517 回答