How to Left Justify part of a String in python?

formatting, justify, python, string

Solution

Have a look at Python's Format Specification Mini-Language and printf-style String Formatting.

EXAMPLE:

>>> '{:<20} {}'.format('## execute', 'Execute an IRC command')
'## execute           Execute an IRC command'

Note that `format()` was introduced in Python 3.0 and backported to Python 2.6, so if you are using an older version, the same result can be achieved by:

>>> '%-20s %s' % ('## execute', 'Execute an IRC command')
'## execute           Execute an IRC command'

It's necessary to split the strings in a sensible manner beforehand.

EXAMPLE:

>>> '{:<20} {}'.format(*'{0} <COMMAND>: Help for <command>'.split(': '))
'{0} <COMMAND>        Help for <command>'

>>> '%-20s %s' % tuple('{0} <COMMAND>: Help for <command>'.split(': '))
'{0} <COMMAND>        Help for <command>

Problem

I want to left justify the right part of a string. I am writing an IRC Bot's HELP command and I want the description to be left justified at the same width throughout: ``` List of commands: ## ! Say a Text ## execute Execute an IRC command ## help Help for commands ``` ljust works for a whole string, but how do I do this on a part of a string only? This is my current code for generating the string: ``` format.color( "## ", format.LIME_GREEN ) + self.commands[ cmd ][1].__doc__.format( format.bold( cmd ) ).splitlines()[0].strip() ```

Original source