首页 > 解决方案 > 抓取以 [some text] 开头的 json 对象

问题描述

我正在使用 BS4 浏览电子商务网站,我需要检查库存。我可以检查库存的大多数产品都可以从产品 json 中获取:

stock = (jsonData['stocks']['XZ32_'])

因为 json 对象类似于:

"stocks": {
  "XZ32_": 81
}

但有时它会发生变化,看起来像这样:

"stocks": {
  "XZ32_33935": 81
}

这个数字在每个产品上都会发生变化。

问题:有什么方法可以获取 json 对象中以 "XZ32_" 开头的键的值?

标签: pythonbeautifulsoup

解决方案


您可以使用此示例获取以 开头的键的值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)

推荐阅读