我使用以下代码从网页保存数据:
[...]
response = urllib2.urlopen(req)
the_page = response.read()
data_to_analyse = json.loads(the_page)
import datetime
datafile = open(str(datetime.datetime.now())+'_data.json','w')
datafile.write(str(data_to_analyse))
[...]
现在我尝试使用保存在数据文件中的数据,但我无法正确处理json。
数据文件启动示例部分:
{
u'SiteRep': {
u'DV': {
u'type': u'Obs',
u'dataDate': u'2016-11-18T10:00:00Z',
u'Location': [
{
u'elevation': u'15.0',
u'name': u'BALTASOUND',
u'i': u'3002'
[and so on - file closes correct...]
在我可以简单处理之前' data_to_analyse'用:
for SiteRep in data_to_analyse:
for data_to_analyse_experience in data_to_analyse[SiteRep]:
一切正常。现在我收到错误:
**TypeError:** string indices must be integers, not str
如果我尝试使用该代码加载文件中的数据:
for datafile in os.listdir('.'):
if datafile.endswith('.json'):
data = open(datafile,'r').read()
jsondata = json.dumps(data)
或:
**ValueError:** Expecting property name: line 1 column 2 (char 1)
with:
jsondata = json.loads(data)
如何将文件转换为正确的json对象?
答案 0 :(得分:1)
试试这个
import json
with open('strings.json') as json_data:
d = json.load(json_data)
print(d)
答案 1 :(得分:0)
实际上JSON ValueError: Expecting property name: line 1 column 2 (char 1)通过以下方式解决了问题:
data_to_analyse = open(datafile,'r').read()
data_to_analyse = data_to_analyse.replace("'",'"')
data_to_analyse = data_to_analyse.replace("u\"",'"')
jsondata = json.loads(data_to_analyse)