How to format python string with multiple characters as pading part

Viewed 74

This is all good to pad a single character:

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

However, how to print out abcab12345, by using 'abc' as padding characters?

this is bad:

>>> '{:{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

I like the mini format language in python3 BTW ;-)

1 Answers

You should concatenate the format operations (TIP: you need to ward your {} with doubles {{}} for each format nesting level):

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

This let us to result '-----12345'

Here you have a live example

Related