Format string dynamically
You can fetch the padding value from the argument list:
print '%*s : %*s' % (20, "Python", 20, "Very Good")
You can even insert the padding values dynamically:
width = 20
args = ("Python", "Very Good")
padded_args = zip([width] * len(args), args)
# Flatten the padded argument list.
print "%*s : %*s" % tuple([item for list in padded_args for item in list])
print '%*s : %*s' % (width, 'Python', width, 'Very Good')
For those who want to do the same thing with python 3.6+ and f-Strings this is the solution.
width = 20
py, vg = "Python", "Very Good"
print(f"{py:>{width}s} : {vg:>{width}s}")
You can do this using the str.format()
method.
>>> width = 20
>>> print("{:>{width}} : {:>{width}}".format("Python", "Very Good", width=width))
Python : Very Good
Starting from Python 3.6 you can use f-string
to do this:
In [579]: lang = 'Python'
In [580]: adj = 'Very Good'
In [581]: width = 20
In [582]: f'{lang:>{width}}: {adj:>{width}}'
Out[582]: ' Python: Very Good'