为什么python的格式函数与单引号和双引号的工作方式不同?

时间:2016-06-15 12:59:36

标签: python string formatting

我的理解是,在Python中,单引号和双引号是可互换的。我遇到了令我困惑的错误:

for i in range(0, 50):
    print('{%4s}'.format(i), end="")

上面的代码给了我一个KeyError(使用Python 3.4)。

如果我将格式函数字符串使用的引号切换为双引号,但是:

for i in range(0, 50):
    print("{%4s}".format(i), end="")   # double quotes in format string

它按预期工作。

有人可以帮助我了解这里发生了什么以及为什么?

2 个答案:

答案 0 :(得分:1)

对于任何一种报价都无效;如你所说,报价没有区别。

我不确定您期望%4s做什么,但它不是迷你语言格式的有效说明符。你想把每个数字填充到四个空格吗?如果是这样的话应该是:

print("{:4}".format(i), end="")

或只是

print(format(i, "4"), end="")

答案 1 :(得分:0)

不要尝试混合使用字符串模运算符和.format()函数。

您可以执行以下操作之一:

print("%4s" % i)

或者:

print(format(i, "4"), end="")

第二个看起来更干净,我更喜欢。