尝试运行包含以下代码的脚本以生成文本块时:
from textwrap import dedent
text = dedent("""\
yada yada '1' ('2','3',4')
('{0}', Null, '{1}',
'{
"Hello":"world",
}', '1', '{2}');""").format("yada1","yada2","yada3")
Run Code Online (Sandbox Code Playgroud)
我得到一致的错误KeyError '\n "Hello"
并追溯指向的线.format().
当我删除format一切都没问题,但我需要它动态输入参数.
(最初它位于循环内)
Mar*_*ers 10
您需要将非占位符{和}字符加倍:
text = dedent("""\
yada yada '1' ('2','3',4')
('{0}', Null, '{1}',
'{{
"Hello":"world",
}}', '1', '{2}');""").format("yada1","yada2","yada3")
Run Code Online (Sandbox Code Playgroud)
否则Python会看到{\n "Hello":"world",\n}占位符,其中的部分:是占位符名称.
格式字符串包含由大括号括起的"替换字段"
{}.大括号中未包含的任何内容都被视为文本文本,它将不加改变地复制到输出中.如果你需要在文字文本中包含一个大括号字符,可以通过加倍来转义它:{{和}}.
(强调我的).
| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |