Python实现JSON标题与列表值匹配并输出指定信息
需求与解决方案
需求
需要将JSON数据中的title字段与列表freeNowList中的标题匹配,找出标题一致的条目,输出对应条目的description(描述)和viewableDate(展示日期)。例如当标题为《Bloons TD 6》时,仅输出该条目的描述和展示日期。
现有代码
import requests import json # 获取Epic免费游戏数据 response = requests.get("https://store-site-backend-static-ipv4.ak.epicgames.com/freeGamesPromotions?locale=en-US&country=US&allowCountries=US") freeGameData = json.loads(response.text) # freeNowList 返回 ['Bloons TD 6', 'Loop Hero'] freeNowList = Epic_Scraper()
修正后的JSON数据结构(原数据存在语法错误)
{ "data": { "Catalog": { "searchStore": { "elements": [ { "title": "Loop Hero", "id": "db122f42b41f4dec927e0f280cf653bd", "namespace": "ff50f85ed609454e80ac46d9496da34d", "description": "巫妖将世界拖入永恒循环,让居民陷入无尽混乱。你需要用不断扩充的神秘卡牌组,在每段独特的探险循环中放置敌人、建筑和地形,引导勇敢的英雄前行。", "effectiveDate": "2021-03-04T18:00:00.000Z", "offerType": "BASE_GAME", "expiryDate": null, "viewableDate": "2021-03-04T18:00:00.000Z", "status": "ACTIVE", "isCodeRedemptionOnly": false }, { "title": "Bloons TD 6", "id": "b27e3b556f1048b9824c7196f32afceb", "namespace": "6a8dfa6e441e4f2f9048a98776c6077d", "description": "气球军团卷土重来,战力更强!准备好体验这款宏大的3D塔防游戏,它能为你带来数小时顶级策略游戏体验。", "effectiveDate": "2022-07-19T12:00:00.000Z", "offerType": "BASE_GAME", "expiryDate": null, "viewableDate": "2022-04-30T00:00:00.000Z", "status": "ACTIVE", "isCodeRedemptionOnly": false }, { "title": "Destiny 2: Bungie 30th Anniversary Pack", "id": "e7b9e222c7274dd28714aba2e06d2a01", "namespace": "428115def4ca4deea9d69c99c5a5a99e", "description": "30周年纪念包包含全新地牢、异域火箭发射器“加拉尔号角”、新武器、护甲及更多内容。", "effectiveDate": "2022-08-23T13:00:00.000Z", "offerType": "DLC", "expiryDate": null, "viewableDate": "2022-08-08T15:00:00.000Z", "status": "ACTIVE", "isCodeRedemptionOnly": false } ] } } } }
匹配与输出的实现代码
# 提取JSON中的游戏元素列表 game_elements = freeGameData['data']['Catalog']['searchStore']['elements'] # 遍历匹配标题并输出目标信息 for game in game_elements: if game['title'] in freeNowList: print(f"标题: {game['title']}") print(f"描述: {game['description']}") print(f"展示日期: {game['viewableDate']}\n")
代码说明
- 从JSON数据中逐层定位到游戏元素列表
game_elements - 遍历每个游戏条目,检查其标题是否在目标列表
freeNowList中 - 匹配成功时,直接输出对应的描述和展示日期
输出示例
标题: Loop Hero 描述: 巫妖将世界拖入永恒循环,让居民陷入无尽混乱。你需要用不断扩充的神秘卡牌组,在每段独特的探险循环中放置敌人、建筑和地形,引导勇敢的英雄前行。 展示日期: 2021-03-04T18:00:00.000Z 标题: Bloons TD 6 描述: 气球军团卷土重来,战力更强!准备好体验这款宏大的3D塔防游戏,它能为你带来数小时顶级策略游戏体验。 展示日期: 2022-04-30T00:00:00.000Z
内容的提问来源于stack exchange,提问作者Nick_Sutton
相关产品推荐
相关产品推荐

