Python: Cómo dividir el texto en una matriz multidimensional.
Estoy extrayendo datos de una página web y finalmente tengo 5 cadenas que se ven así:
charts[1][‘min’] = [[‘Mi’,5.6],[‘Do’,2.9],[‘Fr’,1.7],[‘Sa’,3.7],[‘So’,2.9],[‘Mo’,4.1],[‘Di’,4]];
charts[1][‘mittel’] = [[‘Mi’,6.2],[‘Do’,5.4],[‘Fr’,3.9],[‘Sa’,4.5],[‘So’,4.7],[‘Mo’,5.4],[‘Di’,4.6]];
charts[1][‘max’] = [[‘Mi’,7.2],[‘Do’,8.8],[‘Fr’,5.9],[‘Sa’,5.5],[‘So’,6.8],[‘Mo’,6.6],[‘Di’,5.8]];
charts[2][‘line’] = [[‘Mi’,59],[‘Do’,69],[‘Fr’,72],[‘Sa’,65],[‘So’,66],[‘Mo’,65],[‘Di’,76]];
charts[3][‘line’] = [[‘Mi’,5],[‘Do’,4],[‘Fr’,0],[‘Sa’,5],[‘So’,0],[‘Mo’,5],[‘Di’,0]];
Obviamente necesitaría un array que contenga solo la parte derecha. Los datos siempre son un día (en alemán) y un número. Al ser nuevo en Python, busco una solución fácil. ¿Alguna idea?
davy.ai
Una solución es utilizar expresiones regulares para extraer los datos de las cadenas. Aquí hay un ejemplo:
En este ejemplo, usamos una expresión regular para coincidir con los pares de día y número (por ejemplo,
['Mi',5.6]
). El patrón de expresión regular\[[^,]+?'\,(\d+\.\d+|\d+)\]\,?
coincide con un corchete seguido de cualquier conjunto de caracteres que no sean comas ([^,]
) y una comilla simple, seguida de una coma, seguida de un número con o sin decimales ((\d+\.\d+|\d+)
), seguido de un corchete y una coma opcional.Luego, aplicamos esta expresión regular a cada cadena de entrada usando la función
re.findall
, que devuelve una lista de todas las coincidencias. Convertimos esta lista en una tupla y la agregamos a una lista de tuplas llamadadata
. Finalmente, imprimimos la listadata
, que contiene solo la parte derecha de las cadenas originales (es decir, los pares de día y número).