Как мне добавить новые элементы в правильный объект json с другого веб-сайта? - PullRequest
0 голосов
/ 27 мая 2020

В настоящее время я использую ParseHub для очистки некоторых c базовых данных о списках округов, файл json для этого можно увидеть ниже. Я также хочу очистить текущее время в каждой стране, что означает переход на другой веб-сайт, на котором можно найти такую ​​информацию, но список округов на этом веб-сайте находится в совершенно другом порядке, что означает, что в каждой стране будет неправильное время.

Есть ли случай, когда я могу очистить время каждой страны и добавить его к правильному объекту стран json, или я думаю об этом неправильно?

country. json

{
 "country": [
  {
   "name": "China",
   "pop": "1,438,801,917",
   "area": "9,706,961 km²",
   "growth": "0.39%",
   "worldPer": "18.47%",
   "rank": "1"
  },
  {
   "name": "India",
   "pop": "1,378,687,736",
   "area": "3,287,590 km²",
   "growth": "0.99%",
   "worldPer": "17.70%",
   "rank": "2"
  },
  {
   "name": "United States",
   "pop": "330,812,025",
   "area": "9,372,610 km²",
   "growth": "0.59%",
   "worldPer": "4.25%",
   "rank": "3"
  }
{

время. json

{
 "country": [
  {
   "name": "china",
   "time": "18:36"
  }
{

Как мне go добавить эти данные в объект China в стране? json

1 Ответ

1 голос
/ 27 мая 2020

Попробуйте следующее:

import json

with open('country.json') as f1, open('time.json') as f2:
    country = json.loads(f1.read())
    time = json.loads(f2.read())

country = {x['name'].lower(): x for x in country['country']}

for y in time['country']:
    if y['name'].lower() in country:
        country[y['name'].lower()]['time'] = y['time']

country = {'country': list(country.values())}

with open('country.json', 'w') as fw:
    json.dump(country, fw)

Вывод: страна. json

{
    "country": [
        {
            "name": "China",
            "pop": "1,438,801,917",
            "area": "9,706,961 km²",
            "growth": "0.39%",
            "worldPer": "18.47%",
            "rank": "1",
            "time": "18:36"
        },
        {
            "name": "India",
            "pop": "1,378,687,736",
            "area": "3,287,590 km²",
            "growth": "0.99%",
            "worldPer": "17.70%",
            "rank": "2"
        },
        {
            "name": "United States",
            "pop": "330,812,025",
            "area": "9,372,610 km²",
            "growth": "0.59%",
            "worldPer": "4.25%",
            "rank": "3"
        }
    ]
}
...