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你已经失去了理智,堆积如山,这里的每个人都只是你想象中的虚构。(至少我一直在告诉自己):)