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