2016-01-06 4 views
0

У меня есть этот кусок кода для обработки больших файлов в Python:Обработка огромный файл JSON в Python - ValueError

import urllib2, json, csv 
import requests 

def readJson(url): 
    """ 
    Read a json file. 
    :param url: url to be read. 
    :return: a json file. 
    """ 
    try: 
     response = urllib2.urlopen(url) 
     return json.loads(response.read(), strict=False) 
    except urllib2.HTTPError as e: 
     return None 

def getRoadsTopology(): 
    nodes = [] 
    edges = [] 

    url = "https://data.cityofnewyork.us/api/geospatial/svwp-sbcd?method=export&format=GeoJSON" 
    data = readJson(url) 
    print "Done reading road bed" 
    print "Processing road bed..." 

    v_index = 0; 
    roads = 0 
    for road in data['features']: 
     n_index = len(nodes) 
     # (long, lat) 
     coordinates = road['geometry']['coordinates'][0] 
     for i in range(0, len(coordinates)): 
      lat_long = coordinates[i] 
      nodes.append((lat_long[1], lat_long[0])) 

     for i in range(n_index, len(nodes)-1-n_index): 
      print i, i+1 
      edges.append((i, i+1)) 
    return nodes, edges 

Иногда это работает, но много раз я получаю ту же ошибку в разных строках:

File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Expecting : delimiter: line 7 column 4 (char 74317829) 



File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Expecting , delimiter: line 5 column 1 (char 72149996) 

Мне интересно, что вызывает эту ошибку, и на разных линиях, и как я могу ее решить.

Сайт, которые обеспечивают этот файл имеет также успешную презентацию этого:

https://data.cityofnewyork.us/City-Government/road/svwp-sbcd

+2

Ваш вход JSON неисправен. –

+0

* Почему это неправильно, мы не можем видеть, вы не делились своей функцией 'readJson', поэтому мы не знаем, как вы загружаете URL-адрес. –

+0

Или может быть что-то неправильно с 'readJson()' function ... так как он должен возвращать объект JSON –

ответ

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