【问题标题】:str.format() raises KeyErrorstr.format() 引发 KeyError
【发布时间】:2011-02-14 20:38:53
【问题描述】:

以下代码引发KeyError 异常:

addr_list_formatted = []
addr_list_idx = 0

for addr in addr_list: # addr_list is a list
    addr_list_idx = addr_list_idx + 1
    addr_list_formatted.append("""
        "{0}"
        {
        "gamedir"  "str"
        "address"  "{1}"
        }
    """.format(addr_list_idx, addr))

为什么?

我正在使用 Python 3.1。

【问题讨论】:

标签: python syntax string-formatting delimiter missing-data


【解决方案1】:

问题在于您那里的那些{} 字符没有指定用于格式化的键。您需要将它们加倍,因此将代码更改为:

addr_list_formatted.append("""
    "{0}"
    {{
    "gamedir"  "str"
    "address"  "{1}"
    }}
""".format(addr_list_idx, addr))

【讨论】:

  • 如果有人想在 Python 中使用 JSON 怎么办?
  • @fijiaaron the double { in answer只是告诉format方法这里没有格式化的键(所以它们在格式化的字符串中转义,不应该是以这种方式构建 JSON 的问题)。或者,还有其他有效的方法来操作字符串,例如 join 方法:"".join(['{"', var_name, '":', value, '}'])
  • 我几乎失去了理智,直到弄清楚问题出在哪里
  • @DmitryKankalovich 你疯了,Stack Overflow,这里的每个人,都只是你想象中的虚构。 (至少我一直这么告诉自己):)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多