Python - .format,{}触及其他字符

时间:2014-04-08 18:40:15

标签: python

我正在尝试使用带有字符串的“.format”在for循环中插入值。这就是我想要做的事情:

with open('test.txt', 'w') as fout:
    for element in range (0, 5):
        line1 = 'Icon_{}.NO = Icon_Generic;'.format(element)
        fout.write(line1)

当我这样做时,它会窒息。我最好的猜测是它不喜欢{}(“_ {}”)旁边的下划线。它是否正确?对此有一个很好的解决方法吗?

我使用过这样的东西并且有效:

line1 = Icon_Generic.NO = Icon_%02d.NO;\n' % element

但是,如果我想使用“%element”做大型多行代码,则效果不佳。

提前致谢!

编辑:我最好能告诉我使用的是Python 3.3

这是我得到的错误(使用IDLE 3.3.2 shell):

>>> with open('p_text.txt', 'w') as fout:
for element in range(0, 5):
    template = """if (!Icon_{0}.notFirstScan) {""".format(element)
    fout.write(template)
    fout.write('\n\n')
input('press enter to exit')

Traceback (most recent call last):
File "<pyshell#13>", line 3, in <module>
template = """if (!Icon_{0}.notFirstScan) {""".format(element)
ValueError: Single '{' encountered in format string

1 个答案:

答案 0 :(得分:2)

这是给你问题的最后一个开头括号,如错误信息所示:“单'{'遇到”。如果你需要在格式化的字符串中使用文字花括号,你必须通过加倍('{{')来表示它们是文字的,从而将它们转义:

template = """if (!Icon_{0}.notFirstScan) {{""".format(element)
                                          ^ escape the literal '{'

请注意,这也适用于关闭大括号(})!

>>> print('{{{0}}}'.format('text within literal braces'))
{text within literal braces}