python - 抓取以 [some text] 开头的 json 对象
问题描述
我正在使用 BS4 浏览电子商务网站,我需要检查库存。我可以检查库存的大多数产品都可以从产品 json 中获取:
stock = (jsonData['stocks']['XZ32_'])
因为 json 对象类似于:
"stocks": {
"XZ32_": 81
}
但有时它会发生变化,看起来像这样:
"stocks": {
"XZ32_33935": 81
}
这个数字在每个产品上都会发生变化。
问题:有什么方法可以获取 json 对象中以 "XZ32_" 开头的键的值?
解决方案
您可以使用此示例获取以 开头的键的值XZ32_
:
jsonData = {
"stocks": {
"XZ32_33935": 81
}
}
xz32 = next(jsonData['stocks'][k] for k in jsonData['stocks'] if k.startswith('XZ32_'))
print(xz32)
印刷:
81
更详细的示例(default
如果未找到密钥则返回):
jsonData = {
"stocks": {
"XZ32_33935": 81
}
}
def get_value(d, key_start, default=None):
for k in d:
if k.startswith(key_start):
return d[k]
return default
x32 = get_value(jsonData['stocks'], 'XZ32_')
print(x32)
推荐阅读
- postgresql - postgres - 创建带参数的触发函数
- java - 拆分后如何访问每个元素
- python - 使用具有 NaN 的无监督最近邻
- angularjs - 使用 karma 和 jamis 进行 Angular 单元测试
- css - 是否可以通过 CSS 禁用输入文本字段中的删除十字?
- r - R中检查(英语)语法的功能
- java - Hazelcast 节点没有收到第一个发布的消息
- indy10 - 向 TIdTCPClient 发送文本时如何修复 Indy TIdTCPServer 冻结?
- ruby-on-rails - 连接错误集群的推送器问题
- typo3 - 如何在引导汉堡菜单中获得额外级别