• Publicidad

Traductor de Español a Latex

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

Traductor de Español a Latex

Notapor charmin » 2010-02-03 18:58 @831

Hola, cómo están. Espero que bien. Bueno, aquí está mi programa el cual es algo así para traducir algo de Español a Latex:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $archivo = <STDIN>;             # se introduce el nombre del archivo a sustituir.
  2.  
  3. $dic = "diccionario.dat";       # diccionario normal->latex.
  4.  
  5. open(ARCHIVO,"<$archivo");      # se abre el archivo a traducir.
  6.  
  7. $count++ while <ARCHIVO>;       # contador de las líneas del archivo.
  8.  
  9. open(ARCHIVO,"<$archivo");
  10.  
  11. @archivo=<ARCHIVO>;             #se le asocia a la el array al archivo.
  12.  
  13. open(DIC,"$dic");               #se abre diccionario.
  14.  
  15.  
  16. #print "\n Este es el archivo original \n\n  @archivo\n Aquí termina el archivo original\n\n";
  17.  
  18.  
  19. while ($r=<DIC>){               #ciclo para separar las variables del diccionario.
  20.  
  21.         ($b,$s) = split (',' ,$r);
  22.          chop($s);
  23.  
  24. foreach $tradu (@archivo){
  25.  
  26.         $tradu =~ s/$b/$s/g;
  27.         print $tradu;
  28. }
  29. close (ARCHIVO);
  30. }
  31.  
  32. close (DIC);
  33.  
  34. print "\nEl archivo tiene $count líneas\n";
  35.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Las preguntas que tengo son las siguientes: al correr el programa me imprime 3 veces el ciclo, y no sé por qué; ya le busqué diversas alternativas y no encontré nada. Por otro lado quisiera saber cómo hacerle para poder hacer que el programa me diga cuántas sustituciones hizo porque solo me dice que realiza una sustitución. De antemano, mil gracias.
charmin
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2010-02-03 14:31 @646

Publicidad

Re: Traductor de Español a Latex

Notapor explorer » 2010-02-03 19:14 @843

Bienvenido a los foros de Perl en Español, charmin.

Están mal compaginadas algunas cosas... sería algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. $archivo = <STDIN>;             # se introduce el nombre del archivo a sustituir
  4. $dic     = 'diccionario.dat';   # diccionario normal->latex
  5.  
  6. open(ARCHIVO,"<$archivo");      # se abre el archivo a traducir
  7. while (<ARCHIVO>) {
  8.     $count++ ;                  # contador de las líneas del archivo
  9.     push @archivo, $_;          # se guarda en el array del archivo
  10. }
  11. close(ARCHIVO);
  12.  
  13. #print "\n Este es el archivo original \n\n  @archivo\n Aquí termina el archivo original\n\n";
  14.  
  15. $cambios = 0;
  16. open(DIC,"$dic");               # se abre diccionario
  17. while ($r = <DIC>) {            # ciclo para separar las variables del diccionario
  18.     ($b,$s) = split (',' ,$r);
  19.     chomp($s);
  20.  
  21.     foreach $tradu (@archivo) {
  22.         $cambios += $tradu =~ s/$b/$s/g;    # hacemos la traducción y llevamos la cuenta
  23.     }
  24. }
  25. close (DIC);
  26.  
  27. print "@archivo\n";             # imprime el archivo traducido
  28.  
  29. print "\nEl archivo tiene $count líneas\n";
  30.  
  31. print "Hubo $cambios cambios\n";
  32.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Re: Traductor de Español a Latex

Notapor charmin » 2010-02-04 01:50 @118

Muchas gracias. Creo que ya entendí cuál era mi problema: estaba en donde cerraba el archivo, para el ciclo while(); y lo del contador creo que tenía la idea pero la estructura no me estaba saliendo. Muchas gracias, ahora sí podré escribir en Latex en español y traducirlo al lenguaje normal de éste. Hasta luego y que tengas un excelente día.
Última edición por explorer el 2010-02-04 02:39 @152, editado 1 vez en total
Razón: Ortografía
charmin
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2010-02-03 14:31 @646

Re: Traductor de Español a Latex

Notapor charmin » 2010-02-04 13:20 @597

Hola de nuevo, aquí con un problema. ¿Cómo puedo hacer para que en lugar de que me de un conteo general me de uno de línea a línea y que me lo guarde en otro archivo? Pensé que ya estaba listo pero pues no era como pensé.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$archivo = <STDIN>;             # se introduce el nombre del archivo a sustituir.

$dic = "diccionario.dat";       # diccionario normal->latex.

open(ARCHIVO,"<$archivo");      # se abre el archivo a traducir.

$count++ while <ARCHIVO>;       # contador de las líneas del archivo.

open(ARCHIVO,"<$archivo");

@archivo=<ARCHIVO>;             #se le asocia a la el array al archivo.

open(DIC,"$dic");               #se abre diccionario.


#print "\n Este es el archivo original \n\n  @archivo\n Aquí termina el archivo original\n\n";


while ($r=<DIC>){               #ciclo para separar las variables del diccionario.

        ($b,$s) = split (',' ,$r);
         chop($s);

foreach $tradu (@archivo){

        $tradu =~ s/$b/$s/g;
        print $tradu;
}
close (ARCHIVO);
}

close (DIC);

print "\nEl archivo tiene $count líneas\n";
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
charmin
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2010-02-03 14:31 @646

Re: Traductor de Español a Latex

Notapor explorer » 2010-02-04 18:28 @811

Pero... ¿por qué quieres leer el fichero dos veces? Con una, es más que suficiente... fíjate en el código que te puse para que veas que hago las dos cosas (contar las líneas y guardarlas en el arreglo) a la vez.

Si quieres guardar el resultado en otro fichero, antes deberás abrirlo, ¿no?

Aquí hay un problema de base... según el código, estás leyendo un diccionario, y por cada palabra, recorres todo el primer fichero, realizando cambios. Así es complicado llevar un contador de los cambios que se realizan por línea (bueno, no es cierto: sí que es fácil llevar esa cuenta).

Yo lo haría al revés:
* Leer todo el diccionario a un arreglo
* Hacer un bucle por todas las filas del primer fichero
* Por cada línea, aplicar los cambios por cada palabra del diccionario. Y sumar esos cambios y presentarlos.

Algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. $archivo = <STDIN>;             # se introduce el nombre del archivo a sustituir
  4. $dic     = 'diccionario.dat';   # diccionario normal->latex
  5.  
  6. open(ARCHIVO,"<$archivo");      # se abre el archivo a traducir
  7. while (<ARCHIVO>) {
  8.     $count++ ;                  # contador de las líneas del archivo
  9.     push @archivo, $_;          # se guarda en el array del archivo
  10. }
  11. close(ARCHIVO);
  12.  
  13. print "\nEl archivo tiene $count líneas\n";
  14.  
  15. open(DIC,"$dic");               # se abre diccionario
  16. while (<DIC>) {                 # ciclo para separar las variables del diccionario
  17.     chomp;
  18.     ($b,$s) = split q[,];
  19.     $dicc{$b} = $s;             # lo guardamos en un hash
  20. }
  21. close (DIC);
  22.  
  23.  
  24. $n_linea = 1;                   # número de línea
  25. for $linea (@archivo) {
  26.  
  27.     $cambios = 0;
  28.  
  29.     for $b (keys %dicc) {       # para todas las claves del diccionario
  30.         # hacemos la traducción y llevamos la cuenta
  31.         $cambios += $linea =~ s/$b/$dicc{$b}/g;
  32.     }
  33.  
  34.     print "Línea $n_linea con $cambios cambios\n";
  35.  
  36.     $n_linea++;
  37. }
  38.  
  39. undef $";                       # no queremos separación entre líneas
  40. print "@archivo";               # imprime el archivo traducido
  41.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

No lo he probado porque no sé qué aspecto tienen los dos ficheros de entrada, así que no sé si funcionará.
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

Re: Traductor de Español a Latex

Notapor charmin » 2010-02-04 18:39 @819

Hola. Déjame probarlo.

Lo que pasa es que pensé que se tenía que hacer el contador total, pero se requiere que sea un contador línea por línea del archivo a traducir.

El diccionario es no más como mi base de datos para las traducciones. pero veamos a ver qué tal.
charmin
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2010-02-03 14:31 @646


Volver a Básico

¿Quién está conectado?

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

cron