我尝试从html中提取值,然后将它们转换成一个json数组,到目前为止,我已经能够得到我想要的,但只是作为单独的字符串:
我做了两个for循环:
for line in games_html.findAll('div', class_="product_score"):
score = "{'Score': %s}" % line.getText(strip=True)
print(score)
for line in games_html.findAll('a'):
title = "{'Title': '%s'}" % line.getText(strip=True)
print(title)
其产生以下两个输出:
{'Title': 'Uncanny Valley'}
{'Title': 'Subject 13'}
{'Title': '2Dark'}
{'Title': 'Lethal VR'}
{'Title': 'Earthlock: Festival of Magic'}
{'Title': 'Knee Deep'}
{'Title': 'VR Ping Pong'}
以及
{'Score': 73}
{'Score': 73}
{'Score': 72}
{'Score': 72}
{'Score': 72}
{'Score': 71}
{'Score': 71}
(they更长,但你可以得到一个想法与此...)
我如何使用python创建一个json数组,看起来像这样:
[{'Title': 'Uncanny Valley', 'Score': 73}, {....}]
我将使用生成的数组来做其他事情....
我需要把循环中的元素存储到列表中,然后合并它们吗?你能给我的场景举个例子吗?
2条答案
按热度按时间2izufjch1#
您需要维护两个列表,分别用于分数和标题,并将所有数据附加到这些列表中,而不是打印,然后
zip
这些列表沿着列表解析,以获得所需的输出:332nm8kg2#
如ZdaR's post所示,要创建一个json,需要构建相应的Python数据结构(json数组的列表,json对象的字典),并在最后将其序列化,所以问题几乎与如何在循环中创建列表相同,因为在创建列表之后,剩下的就是序列化,这就像
json.loads(data)
一样简单。OP中的任务可以在两个循环中完成: