Python str.format()引发键错误

Python str.format()引发键错误,python,syntax,string-formatting,delimiter,missing-data,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" "{

以下代码引发
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))
为什么?


我使用的是Python3.1。

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

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

您可能可以通过列表理解(使用
enumerate
获取索引)完成相同的任务。另请参见(复制)如果有人想在Python中使用JSON怎么办?@fijiaaron答案中的double
{
只是告诉
format
方法这里没有格式化键(因此它们在格式化字符串中转义,以这种方式构建JSON应该不会有问题)。或者,还有其他有效的方法来操作字符串,比如
join
方法:
”.join(['{'',var_name',':',value',}'])
我几乎失去了理智,直到我意识到问题出在哪里problem@DmitryKankalovich你已经失去了理智,堆积如山,这里的每个人都只是你想象中的虚构。(至少我一直在告诉自己):)