如何在python中左对齐String的一部分?

时间:2012-12-10 20:54:20

标签: python string formatting justify

我想左右对齐字符串的正确部分。我正在写一个IRC Bot的HELP命令,我希望描述在相同的宽度上保持对齐:

List of commands:
## !          Say a Text
## execute    Execute an IRC command
## help       Help for commands

ljust 适用于整个字符串,但如何仅对字符串的一部分执行此操作?

这是我当前生成字符串的代码:

format.color( "## ", format.LIME_GREEN ) + self.commands[ cmd ][1].__doc__.format( format.bold( cmd ) ).splitlines()[0].strip()

2 个答案:

答案 0 :(得分:3)

查看Python的Format Specification Mini-Languageprintf-style String Formatting

示例:

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

请注意format()是在Python 3.0中引入并向后移植到Python 2.6,因此如果您使用的是旧版本,则可以通过以下方式获得相同的结果:

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

有必要事先以合理的方式分割琴弦。

示例:

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

答案 1 :(得分:0)

你正确地提到了str.ljust,所以这只是根据需要拆分字符串并将其应用于“左”部分的情况。 E.g:

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

显然,为了简单起见,在开始加入字符串之前执行此操作可能会更好。