str.format()引发KeyError

Dor*_*Dor 63 python syntax string-formatting delimiter missing-data

以下代码引发了一个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))
Run Code Online (Sandbox Code Playgroud)

为什么?

我正在使用Python 3.1.

ang*_*son 120

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

addr_list_formatted.append("""
    "{0}"
    {{
    "gamedir"  "str"
    "address"  "{1}"
    }}
""".format(addr_list_idx, addr))
Run Code Online (Sandbox Code Playgroud)

  • 如果有人想在Python中使用JSON怎么办? (7认同)
  • @fijiaaron答案中的双重`{`只是告诉`format`方法,这里没有格式化的键(所以它们在格式化字符串中被转义,因此构建JSON不应该是一个问题).或者,还有其他有效的方法来操作字符串,例如`join`方法:`"".join(['{"',var_name,'":',value,'}'])` (2认同)
  • @DmitryKankalovich 你已经失去了理智,Stack Overflow,这里的每个人都只是你想象力的虚构。(至少我一直这么告诉自己):) (2认同)