elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ayuda con python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con python  (Leído 2,153 veces)
AlejandroPrz

Desconectado Desconectado

Mensajes: 4


Ver Perfil
ayuda con python
« en: 8 Febrero 2014, 10:10 am »

Buenas amigos hacker's. ¿como les va? espero bien.

Tengo una pequeña duda, y es que como puedo hacer para leer todas las coincidencias en una linea con expresiones regulares, ya que estoy haciendo
un software en python para pasar las plantillas de smarty a puro php.
y entonces cuando lee una plantilla y busca una coincidencia, agarra solamente la primera, de la linea, y las otras se quedan sin editarse.

necesito mas o menos hacer esto:


de una linea supongamos esta
Código:
 "<div>Usuario: {$usuario}<span> años: {$user.year}</span></div>"

necesito que las reemplace por estas

Código:
"<div>usuario <?php echo $usuario; ?><span><?php echo $user['year']; ?></span> 

claro todo eso con expresiones regulares ya que pueden cambiar pero no consigo como hacerlo


este es mi codigo:

Código
  1. def parse(self, linea):
  2.        txt = self._var(linea)
  3.        txt = self._arrayVar(linea)
  4.        return txt
  5.  
  6.    def _var(self, linea):
  7.        txt = linea
  8.  
  9.        re1='.*?' # Non-greedy match on filler
  10.        re2='(\\{' # Any Single Character 1
  11.        re3='\\$' # Any Single Character 2
  12.        re4='((?:[a-z][a-z0-9_]*))' # Variable Name 1
  13.        re5='\\})' # Any Single Character 3
  14.  
  15.        rg = re.compile(re1+re2+re3+re4+re5,re.IGNORECASE|re.DOTALL)
  16.        m = rg.search(txt)
  17.        if m:
  18.            print m.group(1) + ' -var simple'          
  19.            var = m.group(2)
  20.            txt = re.sub(r'' + re1+re2+re3+re4+re5, r'\1<?php echo \3;?>', txt)
  21.            return txt
  22.        else:
  23.            return linea
  24.  
  25.    def _arrayVar(self, linea):
  26.        txt = linea
  27.  
  28.        re1='.*?' # Non-greedy match on filler
  29.        re2='(\\{' # Any Single Character 1
  30.        re3='\\$' # Any Single Character 2
  31.        re4='((?:[a-z][a-z0-9_]*))' # Variable Name 1
  32.        re5='\\.' # Any Single Character 3
  33.        re6='((?:[a-z][a-z0-9_]*))' # Variable Name 2
  34.        re7='\\})' # Any Single Character 4
  35.  
  36.        rg = re.compile(re1+re2+re3+re4+re5+re6+re7,re.IGNORECASE|re.DOTALL)
  37.  
  38.        m = rg.search(txt)
  39.        if m:
  40.            print m.group(1) + ' -var double'
  41.            var = m.group(2)
  42.            array = m.group(3)
  43.            txt = re.sub(r'' + re1+re2+re3+re4+re5+re6+re7, r'<?php echo ' + var + '[\'' + array + '\']; ?>' , txt)
  44.            return txt
  45.        else:
  46.            return linea

necesito de sus ayudas. En verdad GRACIAS.


« Última modificación: 8 Febrero 2014, 11:16 am por Eleкtro » En línea

fary


Desconectado Desconectado

Mensajes: 1.076



Ver Perfil WWW
Re: ayuda con python
« Respuesta #1 en: 8 Febrero 2014, 12:38 pm »

No se Python, pero te lo dejo en Perl, que supongo que no cambiará mucho.

Sería con s// y añadiendo al final la letra g para que se repita tantas veces como aparezca la cadena.

en pseudocódigo:

s/CadenaARemplazar/CadenaRemplazada/g;


código real:

Código
  1. use utf8;
  2. use feature 'say';
  3.  
  4. open(my $file,"index.html");
  5. undef $/;
  6. my $datos = <$file>;
  7. close $file;
  8.  
  9. $datos =~ s/<div>Usuario: {\$usuario}<span> años: {\$user.year}<\/span><\/div>/<div>usuario <?php echo \$usuario; ?><span><?php echo \$user['year']; ?><\/span>/g;
  10.  
  11. say $datos;


En línea

Un byte a la izquierda.
AlejandroPrz

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: ayuda con python
« Respuesta #2 en: 8 Febrero 2014, 20:07 pm »

gracias por comentar amigo, intentare a ver.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda IDE Python
Scripting
kyps 7 4,072 Último mensaje 4 Enero 2010, 06:15 am
por Carloswaldo
Ayuda con Python « 1 2 »
Scripting
Ideka 12 8,744 Último mensaje 19 Febrero 2010, 23:32 pm
por leogtz
Ayuda Con [Python]
Scripting
jero22 3 2,655 Último mensaje 2 Abril 2010, 20:51 pm
por Masita
Ayuda con Python
Scripting
Soft87 2 3,224 Último mensaje 27 Mayo 2011, 02:52 am
por Novlucker
[Python] ¿Por qué Python 2.7.3 admite la sintaxis de Python 3? « 1 2 »
Scripting
Yidu 10 11,192 Último mensaje 10 Febrero 2013, 21:46 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines