Python字符串格式化填充值作为变量

时间:2014-12-10 12:10:58

标签: python-2.7 string-formatting

所以我有这个简单的print声明:

print "%-10s %s" % ("test","string")

打印所需的输出:

test       string

我正在尝试找出填充值是变量的情况的正确语法。例如:

w = 10
print "%-s %s" % (w,"test","string")

那么%-s应该替换为适应填充值的内容吗?

如果我没记错的话,语法类似于%-xs,其中x被一个int变量替换。我可能会弄错。

注意

我知道这个问题可能是重复的,因为这确实是基本的字符串格式化问题。但是,经过一段时间搜索正确的语法后,我放弃了。

2 个答案:

答案 0 :(得分:6)

我倾向于使用str.format,而不是:

>>> print "{:{width}}{}".format("test", "string", width=10)
test      string

答案 1 :(得分:0)

您可以分两个阶段完成此操作:首先,创建正确的格式字符串,然后使用它来创建实际输出。使用%d作为宽度的占位符,并将%作为%%转义。

formatstring = "%%-%ds %%s" % w
print formatstring % ("test","string")

或者在一行中:

print ("%%-%ds %%s" % w) % ("test","string")

更新:正如Martijn在评论中指出的那样,你也可以use * in the format string

print "%-*s %s" % (w,"test","string")

来自文档:

  

最小字段宽度(可选)。如果指定为'*'(星号),则从值的元组的下一个元素读取实际宽度,并且要转换的对象在最小字段宽度和可选精度之后。