当尝试运行包含以下代码的脚本来生成文本块时:
from textwrap import dedent
text = dedent("""\
yada yada '1' ('2','3',4')
('{0}', Null, '{1}',
'{
"Hello":"world",
}', '1', '{2}');""").format("yada1","yada2","yada3")
我得到一致的错误KeyError '\n "Hello"
并回溯指向该线.format()
.
当我删除format
一切都很好,但我需要它动态输入参数。
(最初它驻留在循环内)
你需要加倍{
and }
不是占位符的字符:
text = dedent("""\
yada yada '1' ('2','3',4')
('{0}', Null, '{1}',
'{{
"Hello":"world",
}}', '1', '{2}');""").format("yada1","yada2","yada3")
否则 Python 会看到{\n "Hello":"world",\n}
占位符,其中直到:
是占位符名称。
来自格式化字符串语法文档 https://docs.python.org/2/library/string.html#format-string-syntax:
格式字符串包含用大括号括起来的“替换字段”{}
。任何未包含在大括号中的内容都被视为文字文本,它会原封不动地复制到输出中。如果需要在文字中包含大括号字符,可以通过加倍来转义:{{
and }}
.
(强调我的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)