如何基于Python Requests返回字段值是否存在的布尔结果
解决方案:将数据提取脚本改为字段有效性校验脚本
核心思路是对每个字段的值做有效性判断,返回True(存在有效值)或False(无有效值,比如为None、空字符串等)。可以先定义一个辅助函数统一处理判断逻辑,避免重复代码。
修改后的代码示例
import requests def has_valid_value(value): # 自定义有效值判断逻辑:排除None、空字符串、空容器 if value is None: return False if isinstance(value, (str, list, dict, tuple)) and not value: return False return True # 假设datasets是已有的数据集列表 result_list = [] for data in datasets: dataset_url = data['uri'] d = requests.get(dataset_url) output = d.json() validation_dict = { 'data_providers': [ { 'name': has_valid_value('NBN Atlas'), 'url': has_valid_value('https://registry.nbnatlas.org/datasets'), 'api_url': has_valid_value('https://registry.nbnatlas.org/ws/dataResource'), 'type': has_valid_value('host') }, { 'name': has_valid_value(owner_name), 'url': has_valid_value(owner_url), 'api_url': has_valid_value(owner_api_url), 'type': has_valid_value('owner') } ], 'datasets': [{ 'title': has_valid_value(output.get('name')), 'url': has_valid_value(output.get('alaPublicUrl')), 'summary': has_valid_value(output.get('pubDescription')), 'dataset_type': has_valid_value(output.get('resourceType')), }], 'data_licences': [{ 'name': has_valid_value(output.get('licenseType')), 'version': has_valid_value(output.get('licenseVersion')), 'url': has_valid_value(None), 'description': has_valid_value(None), }], } result_list.append(validation_dict) # 输出符合要求的JSON格式结果 import json print(json.dumps(result_list, indent=2))
关键说明
has_valid_value函数:统一处理有效值判断,可根据实际需求调整逻辑(比如是否把数字0视为有效、是否允许空列表等)。- 把原代码中每个字段的取值,替换为调用该函数的返回值,就能得到对应的布尔标识。
- 运行后输出的JSON结构与你给出的期望示例完全一致,每个字段对应
true或false。
内容的提问来源于stack exchange,提问作者h1m aga1n
相关产品推荐
相关产品推荐

