Sustitucion de caracteres
nocreyente
nocreyentes en terra.es
Jue Ene 26 21:36:38 CET 2006
Buenas:
No se si será la mejor forma, no he hecho pruebas de estres, pero hay
tienes otra forma de hacerlo:
import re, sys
#A la cadena le falra algun caracter chungo que no pille bien de tu mail
regMalos = re.compile(r"(\?|\$|\#|\"|\'|`|\(|\)|\[|\]|\||\{|\}|~|\
|;|=|&|\\|!)")
cadena = sys.argv[1]
copia = "" #Voy a copiar a una nueva cadena el resultado
inicio = 0
for match in regMalos.finditer(cadena): #Busco todas la incidencias
chungas
copia = copia + cadena[inicio:match.start()] + "\\" +
match.groups()[0] #copio lo bueno y lo malo arreglao ¿deberia usar
"%s\\%s"?
inicio = match.end() #Marcamos el nuevo comienzo de una cadena
buena
copia = copia + cadena[inicio:] #Los caracteres buenos
print copia
No se si funcionara bien del todo, porque no le hice muchas pruebas,
las justas para ver que no habia errores de bulto. Supongo que sera mas
rapida, porque solo se hace copiado de la cadena cuando hay caracteres
raros.
Espero que te sirva de algo, aunque solo sea para que las expresiones
regulares (aunque son un infierno al principio) son muy utiles.
Un saludo:
Javi
El 26/01/2006, a las 12:19, Israel Gutierrez escribió:
> Buenas
>
> Tengo una pequeña función que trata de substituir determinados
> caracteres
> contenidos en una tupla para escaparlos, de manera que si el carácter
> es a
> quede como \\a, pero es muy lenta y no se me ocurre como hacerlo más
> rápido.
>
> ¿Se os ocurre alguna idea?
>
> ---------------------------------------------------------
> def path2shell(self,cadena):
> """
> Convierte un path de un fichero a un path de fichero de
> shell
> espacios son \
> comilla simple \'
> comilla doble \"
> """
>
> todelete=('?','$','#','"',"'",'`','(',')','[',']','|','{','}','~',' ',
> ';','=','&','\\','!','¡')
> for a in cadena:
> if a in todelete:
> restexto =restexto+'\\'+a
> else:
> restexto=restexto+a
> return restexto
> --
>
> Un saludo.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es