Python の % 演算子を使用した %s の可変長 質問する

Python の % 演算子を使用した %s の可変長 質問する

私はこれをやろうとしています:

max_title_width = max([len(text) for text in columns])

for column in columns:
    print "%10s, blah" % column

10しかし、を の値に置き換えたいのですmax_title_width。これをできるだけ Python らしい方法で実行するにはどうすればよいですか?

ベストアンサー1

これは C フォーマット マークアップからの継承です。

print "%*s, blah" % (max_title_width,column)

左揃えのテキストが必要な場合(エントリが より短い場合max_title_width)は、「*」の前に「-」を付けます。

>>> text = "abcdef"
>>> print "<%*s>" % (len(text)+2,text)
<  abcdef>
>>> print "<%-*s>" % (len(text)+2,text)
<abcdef  >
>>>

len フィールドがテキスト文字列より短い場合、文字列はオーバーフローします。

>>> print "<%*s>" % (len(text)-2,text)
<abcdef>

最大長でクリップする場合は、フォーマット プレースホルダーの '.' 精度フィールドを使用します。

>>> print "<%.*s>" % (len(text)-2,text)
<abcd>

これらをすべてまとめると次のようになります。

%
- if left justified
* or integer - min width (if '*', insert variable length in data tuple)
.* or .integer - max width (if '*', insert variable length in data tuple)

おすすめ記事