【问题标题】:How to Left Justify part of a String in python?如何在python中左对齐字符串的一部分?
【发布时间】:2012-11-28 08:16:18
【问题描述】:

我想左对齐字符串的右边部分。我正在编写一个 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()

【问题讨论】:

  • 分割相关部分的字符串,只选择你想要的部分,然后加入。

标签: python string formatting justify


【解决方案1】:

您正确地提到了str.ljust,所以这只是适当拆分字符串并将其应用于“左”部分的情况。例如:

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

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

【讨论】:

    【解决方案2】:

    看看 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>
    

    【讨论】:

    • 这适用于该列表,但我该如何绕过格式化:“{0} : Help for
    • 好的,你的第二个非常完美,我换成你的是为了更紧凑。我现在没有 .format() 引擎这么强大!
    猜你喜欢
    • 2016-12-30
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2020-12-03
    • 2018-06-02
    • 2016-03-28
    相关资源
    最近更新 更多