3

string.format 変数の値に応じて、文字列を特定の長さにパディングしたいのですが、ミニ言語を使用してこれを行う標準的な Pythonic の方法があるかどうか疑問に思っています。現在、文字列連結を使用できます。

padded_length = 5
print(("\n{:-<" + str((padded_length)) + "}").format("abc"))
# Outputs "abc--"

padded_length = 10
print(("\n{:-<" + str((padded_length)) + "}").format("abc"))
#Outputs "abc-------"

私はこの方法を試しました:

print(("{:-<{{padded_length}}}".format(padded_length = 10)).format("abc"))

ただし、IndexError: tuple index out of range例外が発生します。

Traceback (most recent call last):
  File "<pyshell#41>", line 1, in <module>
    print(("{:-<{{padded_length}}}".format(padded_length = 10)).format("abc"))
IndexError: tuple index out of range

文字列の連結とは別に、これを行うための標準的な組み込みの方法はありますか? 2 番目の方法は機能するはずなので、なぜ失敗するのかわかりません。

4

3 に答える 3

5

次の例は、解決策を提供するはずです。

padded_length = 5
print("abc".rjust(padded_length, "-"))

プリント:

--abc
于 2012-07-09T01:39:00.777 に答える
5
print(("\n{:-<{}}").format("abc", padded_length))

あなたが試みていた他の方法は、このように書かれるべきです

print(("{{:-<{padded_length}}}".format(padded_length=10)).format("abc"))
于 2012-07-09T01:40:54.890 に答える
2

最も外側の中括弧をエスケープする必要があります。以下は私にとってはうまくいきます:

>>>'{{0:-<{padded_length}}}'.format(padded_length=10).format('abc')
'abc-------'
于 2012-07-09T01:47:33.947 に答える