Проблема с загрузкой файла json для geo_data в python - PullRequest
0 голосов
/ 30 мая 2020

В настоящее время я пытаюсь использовать библиотеку folium в python для создания веб-карт. У меня есть файл world.json, содержащий geo_data. Я дал ссылку на файл в конце этого поста. Я попробовал следующий код:

data = [json.loads(line) for line in open('world.json', 'r')]

и получил следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
  File "C:\Users\name\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\name\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\name\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Как мне загрузить этот файл?

По сути, я хочу достичь получить данные о населении, создать Choropleth и наложить его на мою веб-карту.

Edit: Забыл ссылку:

https://1drv.ms/u/s! Army95vqcKXpaooVAZU_g-VCAVw? e = vwTknq

Редактировать: Предыдущая ссылка на skydrive перестала работать из-за "высокого трафика c". Ниже приведена ссылка на Dropbox, надеюсь, это сработает:

https://www.dropbox.com/s/gmm8db0g03rc7cv/world.json?dl=0

Ответы [ 2 ]

0 голосов
/ 01 июня 2020

Хорошие / плохие новости: оказалось, что этот файл был закодирован в непривычной для нас локали, и json / ascii не может понять некоторые кодировки символов. Я пробовал это, и, похоже, у меня это сработало - с серьезной оговоркой:

with open("world.json", "r") as fh:
    contents = fh.read()
asciiContents = contents.encode("ascii", errors="ignore")
data = json.loads(asciiContents)

Главное предостережение заключается в том, что только 3 страны проходят без ошибок кодирования:

>>> len(data["features"])
3

Может быть, есть другой источник этих данных, который ближе к родному английскому sh языку, или, может быть, кто-то другой может дать мудрость в кодировании сторонних данных более удобным способом ...

0 голосов
/ 30 мая 2020

Команда open вернет дескриптор файла, а не строковые строки. Я бы сделал:

with open('world.json', 'r') as fh:
    data = json.load(fh)

данные будут преобразованы в ваше содержимое в python (список или словарь и т. Д. c)

...