2012-12-10 83 views
3

我想左对齐字符串的正确部分。我写一个IRC bot的HELP命令,我想留在说明理由以相同的宽度遍及:如何在python中左对齐字符串的一部分?

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

分割字符串中的相关部分,ljust你想要的,并加入件。 – mmgp

回答

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> 
+0

这适用于该列表,但我该如何去格式化这个: “{0} :帮助” – sol

+0

好吧,您的第二个工作完美,我切换到您的可压缩性。我现在没有.format()引擎是这个强大的! – sol

0

你正确地提str.ljust,所以它只是区分你的字符串作为适合并将其应用到“左”的一部分的情况。例如:

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

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

+0

谢谢,这对我很好用! – sol

相关问题