我正在搜索一个Python库,用于使用自定义占位符进行字符串格式化。我的意思是我希望能够定义一个像"%f %d %3c"
这样的字符串,其中例如%f
将被替换为一些文件名%d
,其目录名称为%3c
带有三位数的计数器。或者其他的东西。它不一定是印刷品,但如果它会是伟大的。所以我希望能够定义每个字母的含义,字符串或数字,以及一些格式(如数字位数)数据。
这个想法是用户可以指定格式,然后我用数据填写它。就像datefmt一样。但对于定制的东西。
是否有类似于Python的内容(2.5+,遗憾的是不适用于2.7和3及其__format__
)?
答案 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'