所以我有这个简单的print
声明:
print "%-10s %s" % ("test","string")
打印所需的输出:
test string
我正在尝试找出填充值是变量的情况的正确语法。例如:
w = 10
print "%-s %s" % (w,"test","string")
那么%-s
应该替换为适应填充值的内容吗?
如果我没记错的话,语法类似于%-xs
,其中x
被一个int变量替换。我可能会弄错。
我知道这个问题可能是重复的,因为这确实是基本的字符串格式化问题。但是,经过一段时间搜索正确的语法后,我放弃了。
答案 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")
来自文档:
最小字段宽度(可选)。如果指定为'*'(星号),则从值的元组的下一个元素读取实际宽度,并且要转换的对象在最小字段宽度和可选精度之后。