Обработать специальный JSON с ключами в виде чисел - PullRequest
0 голосов
/ 24 января 2019

Я хочу извлечь данные из файла в словарь через json.loads. Пример:

{725: 'pitcher, ewer',
726: "plane, carpenter's plane, woodworking plane"}
  1. json.loads не может обрабатывать ключи как числа
  2. Некоторые значения "", а другие ".

Есть предложения?

Код

import requests

url = url
r = requests.get(url)
response = r.text.replace('\n','')
response = re.sub(r':(\d+):*', r'"\1"', response)

1 Ответ

0 голосов
/ 24 января 2019

Файл, который вы предоставили, выглядит как действительный Python dict, поэтому я предлагаю альтернативный подход, с literal_eval.

from ast import literal_eval

data = literal_eval(r.text)
print(data[726])

Выход: plane, carpenter's plane, woodworking plane


Если вам все еще нравится json, вы можете попробовать заменить числа строками с помощью регулярных выражений.

import re

s = re.sub(r"(?m)^(\W*)(\d+)\b", r'\1"\2"', r.text)
data = json.loads(s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...