Con el siguiente código interpreto la información de una web utilizando HTML::TableExtract. Se leen dos tablas. Por pantalla sale lo que he pegado después del código, y necesitaría guardar la información en un fichero csv en el formato que indico en la parte inferior de esta consulta. Muchas gracias por adelantado.
Lo que necesito es guardar en un csv una parte de estos datos y en dos líneas, eliminado cm., km., añadiendo guiones en los campos (REMUNTADORS y PISTAS) donde la web no ofrece información y en el formato siguiente, la cabecera en la primera línea y en la segunda los datos.
La página está codificada en ISO-8859-15. En el código no haces ningún tipo de transformación de caracteres. Pero tienes activado el módulo utf8::all, con lo que todas las salidas y entradas las tomará en UTF-8.
El caso es que es importante saber en qué codificación quieres que sea la salida, la del csv.
JF^DPerl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
solo necesitas crear e interpretar una sola vez la página que recibes. Una vez interpretada, solo tienes que acceder al array @tables para acceder a las distintas tablas
no es necesario procesar los títulos, porque ya sabemos cuáles son. O dicho de otra manera: necesitaríamos unas cuántas líneas para cambiar de nombre, insertar nuevos o borrar títulos nuevos. En lugar de eso, los asignamos en la línea 43 y ya solo queda arreglar la posición de los @values (esa también es la razón por la cual están comentadas casi todas las líneas que leen los @titles)
la clave está en la línea 34, donde unimos los @values de las dos tablas
JF^DPerl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
dentro de la subrutina arregla() he añadido una conversión de mayúsculas a minúsculas para dos palabras. ¿Hay alguna manera de transformar todas las mayúsculas a minúsculas para todas las palabras que puedan aparecer?
Siguiendo la línea de otro tema planteado esta semana, en este script se capturan diferentes columnas de una tabla de una web, el resultado está al final, donde tengo alguna duda.
Para quitar la palabra 'mín:', se podría intentar con una expresión regular y el operador de sustitución s///.
En cuanto a la coma... algo anda mal... tienes 9 columnas en la cabecera, pero en la línea de datos solo hay 8. Esa es la razón de que hay una coma más: falta un dato.
JF^DPerl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
En cuanto a la expresión regular y el operador s///, he introducido en la subrutina arregla() el siguiente código para quedarme con las cifras pero, lógicamente, se carga todas las palabras que están en otros elementos
¿La solución sería aplicar la primera expresión regular que elimina las letras aplicándolo en el segundo y tercer elemento, en vez de introducirla dentro de la subrutina?
El problema creo que está en la letra 'í': no sabemos en qué codificación te llegan los datos; y no sabemos en qué codificación tienes hecho el programa (como estás usando utf8::all sospechamos que editas tus programas en un ambiente utf-8).