Python str.format,为什么这两种方法都不做同样的事情?

时间:2016-04-10 23:51:47

标签: python python-3.x format

我无法理解为什么剪切的第一个代码不起作用,它与第二个代码相同。

(我正在阅读一本书,但我不知道为什么我的代码不起作用)

"name"

感谢您的帮助,

2 个答案:

答案 0 :(得分:2)

第二个示例{{0:{0}}}{0}代替格式规范,因此第一次格式化时,规范就会被放置到位,并且{}的一层被删除格式标记为双{{}}

>>> "{{0:{0}}}".format(formatr)
'{0:10.4f}'

然后第二次将该字段放置到位:

>>> '{0:10.4f}'.format(x)
'13424.0000'

要一次性进行格式化,您需要将规范指定为{formatr}并将其作为参数添加到.format()

>>> "{0:{formatr}}".format(x,formatr=formatr)
'13424.0000'

或指定为位置参数:

>>> "{0:{1}}".format(x,formatr)
'13424.0000'

答案 1 :(得分:-1)

在您的示例中,python解释器无法识别 formatrstringToBeFormatted作为变量,因此无法解决。如果您将formatr字符串(其内容)按原样放入stringToBeFormatted,它会起作用:

x = float(13424)

stringToBeFormatted = "<td align='right'>{0:10.4f}</td>".format(x)

print(stringToBeFormatted.format(x))