2017-01-17 4 views
0

я сохранение данных с веб-страницы с помощью следующего кода:Загрузка JSON данных из файла в Python

[...] 
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) 

с:

 jsondata = json.loads(data) 

Как преобразовать файл в правильный json obje кар?

ответ

1

Попробуйте с этим

import json 

with open('strings.json') as json_data: 
d = json.load(json_data) 
print(d) 
+0

Результат: ValueError: Ожидать Имя свойства: строка 1 колонка 2 (символ 1) – user2853437

+1

Вы можете чтобы обернуть вашу строку json.load с помощью try catch, поскольку недействительный JSON вызовет сообщение об ошибке stacktrace. – bomboerick

Смежные вопросы