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() ```