Estoy intentando extraer valores de un html y luego convertirlos en una matriz json, y hasta ahora he podido obtener lo que quiero, pero solo como cadenas separadas:
Hice dos para bucles:
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 titleQue producen estas dos salidas:
{'Title': 'Uncanny Valley'} {'Title': 'Subject 13'} {'Title': '2Dark'} {'Title': 'Lethal VR'} {'Title': 'Earthlock: Festival of Magic'} {'Title': 'Knee Deep'} {'Title': 'VR Ping Pong'}y
{'Score': 73} {'Score': 73} {'Score': 72} {'Score': 72} {'Score': 72} {'Score': 71} {'Score': 71}(son más largos pero os podéis hacer una idea con esto...)
¿Cómo puedo usar python para crear una matriz json a partir de estos que se vería así:
[{'Title': 'Uncanny Valley', 'Score': 73}, {....}]Voy a usar la matriz resultante para hacer otras cosas después....
¿Necesito almacenar los elementos del bucle en listas y luego fusionarlos? ¿Podría ilustrar un ejemplo dado mi escenario?
La ayuda es muy apreciada, esta es una experiencia de aprendizaje realmente genial para mí, ya que solo he usado bash hasta ahora. Python se ve mucho más sexy.
Debe mantener dos listas para puntajes y títulos y agregar todos los datos a esas listas, en lugar de imprimir, y luego zip esas listas junto con la lista de comprensión para obtener el resultado deseado como:
import json scores, titles = [], [] for line in games_html.findAll('div', class_="product_score"): scores.append(line.getText(strip=True)) for line in games_html.findAll('a'): titles.append(line.getText(strip=True)) score_titles = [{"Title": t, "Score": s} for t, s in zip(titles, scores)] print score_titles # Printing in JSON format print json.dumps(score_titles)