• Publicidad

Encontrar palabras en textos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Encontrar palabras en textos

Notapor cristobal » 2006-11-10 08:08 @380

Se dispone de un archivo llamado palabras.dat que contiene palabras (no repetidas) en cada línea ordenadas alfabéticamente, luego un segundo archivo HTML llamado texto.html y se requiere contabilizar la cantidad de palabras que tiene este segundo archivo respecto del primero, sin considerar los TAG de HTML. Para ello se pide un script en Perl que entregue estos resultados.

Me gustaría ver si me pueden ayudar con este código. Saludos
cristobal
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2006-08-11 10:08 @463

Publicidad

Notapor explorer » 2006-11-10 08:18 @387

Primero tienes que leer el fichero de palabras sueltas. En este foro hay docenas de ejemplos de cómo hacerlo. Las palabras las metes en un hash.

Luego tienes que leer el fichero HTML. Lo metes en una variable escalar. Y lo pasas por una expresión regular que quita todas las marcas del tipo '<lo_que_sea>'.

Luego, haces un bucle por todas las palabras del primer fichero y con grep sabes si están o no en el segundo fichero. Si sí está, incrementas en un el valor que almacena el hash.

Finalmente, haces otro bucle por todas las palabras sacando los valores almacenados, siempre que sean distintos de cero, claro.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor cristobal » 2006-11-10 10:03 @460

en el archivo palabras.dat estan ordenadas así
Código: Seleccionar todo
avion
burro
mama
zapato


¡¡¡ aquí abro el fichero !!!
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
# Abrimos el fichero
open DAT, "<palabras.dat" or die "No puedo abrir el texto.txt: $!\n";
@bloques = <DAT>;  # Leemos todo el fichero, registro por registro
close DAT;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿Pero cómo meto las palabras en un hash?
Disculpa las preguntas. ¡A lo mejor son tan básicas pero soy nuevo en Perl!
¡Saludos!
cristobal
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2006-08-11 10:08 @463

Notapor explorer » 2006-11-10 10:45 @489

Hay varias formas de hacerlo, leyendo directamente del fichero:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while ( <DAT> ) { $bloques{ $_ } = 0; }
# o
@bloques = <DAT>;
@bloques{@bloques} = (0) x @bloques;
# o
%bloques = map { $_, 0 } <DAT>;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y otras... Desde luego la preferida siempre es la más corta.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 16 invitados