Aceleracion de una funcion

Rafael Villar Burke pachi en mmn-arquitectos.com
Mie Nov 30 13:33:56 CET 2005


Israel Gutierrez wrote:

>Buenas.
>
>Tengo una función que tiene que eliminar caracteres no imprimibles de un 
>buffer que se le pasa(generalmente el contenido de un fichero de texto) para 
>despues presentarlo en un widget de qt. El problema es cuando el buffer es 
>grande (no mas de 500k) que tarda muchisimo. ¿Se os ocurre alguna manera más 
>eficiente de hacerlo?
>
>def solo_texto(self,cadena):
>        resultado=""
>#a es código ascii  que no interesa (lo que no está incluido en 
>string.printable)	
>a=[0,1,2,3,4,5,6,7,8,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160]
>        for caracter in cadena:
>            if ord(caracter) not in a:
>                resultado+=caracter
>            else:
>                continue
>        return resultado
>  
>
- podrías usar str.translate

    *translate*( 	table[, deletechars])

    Return a copy of the string where all characters occurring in the
    optional argument deletechars are removed, and the remaining
    characters have been mapped through the given translation table,
    which must be a string of length 256.

- podrías usar una tupla en vez de una lista

Suerte,

Rafael Villar Burke


------------ próxima parte ------------
_______________________________________________
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