This question already has answers here:
How can I print literal curly-brace characters in a string and also use .format on it?

(20个答案)


5年前关闭。




尝试运行包含以下代码的脚本以生成文本块时:
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时,一切正常,但是我需要它动态地输入参数。
(最初它驻留在一个循环中)

最佳答案

您需要将不是占位符的{}字符加倍:

text = dedent("""\
   yada yada '1' ('2','3',4')
   ('{0}', Null, '{1}',
   '{{
      "Hello":"world",
    }}', '1', '{2}');""").format("yada1","yada2","yada3")

否则,Python将看到{\n "Hello":"world",\n}占位符,其中:之前的部分是占位符名称。

Format String Syntax documenattion:



(强调我的)。

关于python - 获取一致的 key 错误:\n,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32224197/

10-13 09:43