3

我想将字符串填充到一定长度,具体取决于变量的值,我想知道是否有标准的 Pythonic 方法可以使用string.format mini-language执行此操作。现在,我可以使用字符串连接:

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

除了字符串连接之外,是否有标准的内置方法来执行此操作?第二种方法应该有效,所以我不确定它为什么会失败。

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 回答