获取一致的密钥错误:\n [重复]

2024-01-20

当尝试运行包含以下代码的脚本来生成文本块时:

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(使用前将#替换为@)

获取一致的密钥错误:\n [重复] 的相关文章

随机推荐