str.format()会引发KeyError异常

str.format()会引发KeyError异常

问题描述:

下面的代码引起了KeyError例外:str.format()会引发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。

+1

你可以使用list comprehension完成同样的任务(使用'enumerate'获取indeces)。 – SwiftsNamesake 2015-05-12 16:35:37

问题是那些没有指定格式化键的{和}字符。你需要将它们加倍,所以将代码改为:

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

如果有人想在Python中使用JSON会怎么样? – fijiaaron 2016-06-24 00:47:03

+1

@fijiaaron @fijiaaron在回答中,'{''只是告诉'format'方法,这里没有要格式化的密钥(所以它们被转换成格式化的字符串,它不应该是构建JSON的问题。办法)。或者,还有其他有效的方式来处理字符串,如'join'方法:''“.join(['{'',var_name,'”:',value,'}'])' – mgc 2016-06-24 00:57:14