如何从另一个网站向正确的 json 对象添加新元素?
How do I add new elements to the correct json object from another website?
目前我使用 ParseHub 来抓取一些关于列表县的基本数据,下面可以看到 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"
}
{
time.json
{
"country": [
{
"name": "china",
"time": "18:36"
}
{
如何将此数据添加到 country.json
中的中国对象
试试这个:
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)
输出:
country.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"
}
]
}
目前我使用 ParseHub 来抓取一些关于列表县的基本数据,下面可以看到 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"
}
{
time.json
{
"country": [
{
"name": "china",
"time": "18:36"
}
{
如何将此数据添加到 country.json
中的中国对象试试这个:
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)
输出: country.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"
}
]
}