How to Left Justify part of a String in python?

女生的网名这么多〃 提交于 2021-02-07 19:50:59

问题


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

回答1:


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>



回答2:


You rightly mention str.ljust, so it's just a case of splitting your string as appropriate and applying it to the 'left' part. E.g:

>>> parts = "## ! Say a Text".split(" ", 2)
>>> " ".join(parts[:2]).ljust(20)+parts[2]
'## !                Say a Text'

Obviously, it may be better to do this before you start joining the string for simplicity.



来源:https://stackoverflow.com/questions/13809053/how-to-left-justify-part-of-a-string-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!