【问题标题】:Get consistent Key error: \n [duplicate]获取一致的密钥错误:\n [重复]
【发布时间】:2015-11-20 08:23:33
【问题描述】:

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

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 时一切正常,但我需要它来动态输入参数。
(最初它驻留在循环中)

【问题讨论】:

    标签: python keyerror


    【解决方案1】:

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

    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

    格式字符串包含用大括号 {} 包围的“替换字段”。大括号中不包含的任何内容都被视为文字文本,它会原封不动地复制到输出中。 如果您需要在文字文本中包含大括号字符,可以通过加倍将其转义:{{}}

    (强调我的)。

    【讨论】:

      猜你喜欢
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2013-08-29
      相关资源
      最近更新 更多