Aceleracion de una funcion

Pere Martinez peremart en gmail.com
Mie Nov 30 13:46:04 CET 2005


>>>
>>> cad = ';;;'.join(open('print.pdf', 'r').readlines())
>>> len(cad)
443840
>>> type(cad)
<type 'str'>
>>> 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]
>>> len(a)
61
>>> for kod in a:
...             cad = cad.replace(chr(kod), '')
...
>>> len(cad)
341995
>>>

Menos de un segundo...

On 11/30/05, Israel Gutierrez <amphora en escomposlinux.org> 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
>
> --
> Si querés uno igualito/ rompete el lomito como Suarito.
>
>




Más información sobre la lista de distribución Python-es