如何在Python中左对齐字符串的一部分?

3

我希望将字符串的右侧左对齐。我正在编写IRC机器人的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()

将字符串拆分为相关部分,左对齐所需部分,再将它们组合起来。 - mmgp
2个回答

3
请查看Python的格式规范迷你语言printf样式字符串格式化例子:
>>> '{:<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>

这适用于那个列表,但我该如何格式化这个内容: "{0} <COMMAND>:有关<command>的帮助" - s-ol
好的,你的第二个代码完美地运行了,所以我为了兼容性切换到了你的代码。我之前不知道.format()引擎这么强大! - s-ol

0
你正确地提到了str.ljust,所以只需要适当地拆分你的字符串并将其应用于“左”部分即可。例如:
>>> parts = "## ! Say a Text".split(" ", 2)
>>> " ".join(parts[:2]).ljust(20)+parts[2]
'## !                Say a Text'

显然,为了简单起见,在开始连接字符串之前最好这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接