首页 > 解决方案 > 如何格式化具有多个字符的python字符串作为填充部分

问题描述

填充单个字符都很好:

>>> '{:{pad}>{num}}'.format('12345',num='10', pad='a')
aaaaa12345

abcab12345但是,如何通过使用 'abc' 作为填充字符来打印?

这是不好的:

>>> '{:{pad}>{num}}'.format('12345',num='10', pad='abc')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-38-85d5680ad88a> in <module>()
----> 1 '{:{pad}>{num}}'.format('hello',num='10', pad='abc')

ValueError: Invalid format specifier

我喜欢 python3 中的迷你格式语言 BTW ;-)

标签: pythonstringtemplatesformat

解决方案


您应该连接format操作(提示:您需要为每个格式嵌套级别{}使用双打):{{}}

baseFmtStr = "'{{{{:{{pad}}>{num}}}}}'"
resultStr = baseFmtStr.format(num=10).format(pad='-').format(12345)

这让我们得出'-----12345'

这里有一个活生生的例子


推荐阅读