gpt4 book ai didi

python - 迭代 json 数据由许多 None 类型对象组成

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:05 24 4
gpt4 key购买 nike

我正在尝试迭代 json 数据。这是我的数据结构

import requests
import re
url = "https://web.archive.org/__wb/calendarcaptures?url=http%3A%2F%2Fwww.unibocconi.it&selected_year=2014"
# You can see the data structure by copy-pasting the link
data = requests.get(url).json()
for x in data:
for y in x:
for z in y:
for xx in z:
start1 = "'ts': "
start2 = "'st': "
h = str(xx)
a = re.search('%s(.*)' % (start1) , h).group(1)
date = a[:16].replace("[", "").replace("]", "")
date = re.sub("[^0-9]", "", date)
b = re.search('%s(.*)' % (start2) , h).group(1)
status = b[:5].replace("[", "").replace("]", "")

我知道,我无法迭代 None 类型对象。但我花了几个小时都无法解决这个问题。有任何想法吗?注意:我通过使用requests直接从网络获取json数据

最佳答案

如果您真正需要的是计数/状态代码/时间戳值,则无需逐字解析 json 列表。 Python 将根据需要将 json 作为列表/字典提取。 因此,要超越任何“None”值,请使用“if z:”条件语句。

一旦到达 z 存在的位置,z.get('cnt','') 将提取该字段(如果存在),或者如果不存在则不返回任何内容。然后您可以使用 pop 进入状态/日期列表。我编写该部分的方式不太优雅,但它可以完成工作。 (这假设状态/时间戳列表的长度始终为 1。如果情况并非如此,您可以很容易地在其中插入一些其他逻辑/索引来提取您感兴趣的值。)

for x in data:
for y in x:
for z in y:
if z:
count = z.get('cnt', '')
st = z.get('st', '')
if st:
status = st.pop()
ts = z.get('ts', '')
if ts:
date = ts.pop()

print(count, status, date)

2 200 20140308061038

更新:数据是列表类型。

关于python - 迭代 json 数据由许多 None 类型对象组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com