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

2 に答える 2

3

Pythonのフォーマット仕様Mini-Languageおよびprintfスタイルの文字列フォーマットをご覧ください。

例:

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

これformat()はPython3.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>
于 2012-12-10T21:09:18.513 に答える
0

あなたは正しく言及str.ljustしているので、文字列を適切に分割して「左」部分に適用するだけです。例えば:

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

明らかに、簡単にするために、文字列を結合する前にこれを行う方がよい場合があります。

于 2012-12-10T20:56:49.050 に答える