Giuseppe Amato wrote:
> Interessa anche a me la cosa
>
> for i,c in enumerate(leggi):
>>if c=="a" : print i
>>
>> se stessi cercando una parola intera potrei fare:
>
> sstr = "apici"
> lsstr=len(sstr)
> for i,c in enumerate(leggi):
>if c=="a" and leggi[i:i+lsstr]==sstr : print i
>
Con il codice dovresti esprimere quello che vuoi fare: in questo caso secondo
me
è fuorviante cercare una 'a' e poi la stringa:
sstr = "apici"
lsstr=len(sstr)
for i in range(len(leggi)):
if leggi[i:i+lsstr]==sstr: print i
> Ma mi conviene rispetto alle altre due proposte? Qual è la più veloce?
>
Secondo me la versione con le espressioni regolari è la migliore dal punto di
vista della comprensibilità, ma non ho fatto un controllo sulla velocità che
puoi fare tu usando timeit:
http://docs.python.org/library/timeit.html
>> sstr = "sa"
>> lsstr = len(sstr)
>>
>> pos = leggi.find(sstr)
>> print pos
>> while True:
>>new_pos = leggi.find(sstr, pos+lsstr)
>>if new_pos == -1:
>>break
>>else:
>>pos = new_pos
>>print pos
>>
>> oppure
>>
>> import re
>> expr = re.compile('sa')
>> for e in expr.finditer(leggi):
>>print e.start()
>>
>>
>>
>
--
Riccardo Lemmi
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python