我有一个有效的JSON对象,其中列出了一些自行车事故:
{
"city":"San Francisco",
"accidents":[
{
"lat":37.7726483,
"severity":"u'INJURY",
"street1":"11th St",
"street2":"Kissling St",
"image_id":0,
"year":"2012",
"date":"u'20120409",
"lng":-122.4150145
},
],
"source":"http://sf-police.org/"
}
我试图使用python中的json库加载数据,然后将字段添加到“accidents”数组中的对象。我已经像这样加载了json:
with open('sanfrancisco_crashes_cp.json', 'rw') as json_data:
json_data = json.load(json_data)
accidents = json_data['accidents']
当我这样写文件时:
for accident in accidents:
turn = randTurn()
accidents.write(accident['Turn'] = 'right')
我得到以下错误:SyntaxError:keyword不能是表达式
我试过很多不同的方法。如何使用Python向JSON对象添加数据?
首先,
accidents
是一个字典,您不能write
到字典;您只需在字典中设置值。所以,你想要的是:
您想
write
输出的是新的JSON在您完成数据修改之后,您可以dump
将其返回到文件。理想情况下,可以通过写入新文件,然后将其移到原始文件上来完成此操作:
但如果你真的想:
如果你想知道你为什么会犯这个错误:
在Python中,与许多其他语言不同的是,赋值不是表达式,而是语句,它们必须单独在一行上。
但函数调用中的关键字参数具有非常相似的语法。例如,请参见上面示例代码中的
tempfile.NamedTemporaryFile(dir='.', delete=False)
。因此,Python试图将您的
accident['Turn'] = 'right'
解释为一个关键字参数,使用关键字accident['Turn']
。但是关键字只能是实际的单词(好吧,标识符),而不是任意的表达式。因此,它试图解释您的代码失败,您会得到一个错误,说keyword can't be an expression
。相关问题 更多 >
编程相关推荐