[Python] ricerca di stringhe in un testo

Riccardo mancuso mancuso.riccardo63 a gmail.com
Mer 26 Giu 2013 15:57:49 CEST


ma non c'è qualcosa di più semplice e già pronto all'uso ?
avevo provato con find, però mi dà in uscita solo la prima occorrenza
(oppure mi restituisce -1 se non trova nulla).
Non c'è qualcosa di simile ?


Il giorno 26 giugno 2013 15:52, Marco Giusti <marco.giusti a gmail.com> ha
scritto:

> On Wed, Jun 26, 2013 at 03:22:40PM +0200, Riccardo mancuso wrote:
> > ciao a tutti,
> > vi propongo questo problema (premesso che io non ci sono riuscito).
> > Devo trovare in quali punti sono presenti dei termini all'interno di una
> > frase.
> ...
> > se voglio cercare la parola "via" essa sarà presente alla 3° ed alla 12°
> riga.
> >
> > Come posso effettuare la ricerca con python ?
> >
> > va bene, al posto della riga, anche la posizione vettoriale assoluta
> > (tenendo condo che il primo carattere ha posizione 0, il secondo 1 e
> > così via).
> >
> > In sostanza alla fine vorrei avere un dizionario/vettore, con
> > l'indicazione della posizione di cui sopra.
> > Grazie in anticipo.
>
> Questo per la posizione assoluta:
>
>         dct = {}
>         for noun in nouns:
>                 lst = []
>                 idx = text.find(noun)
>                 while idx != -1:
>                         lst.append(idx)
>                         idx = text.find(noun, idx+1)
>                 dct[noun] = lst
>
>
> E questo per le righe:
>
>         dct = {}
>         for noun in nouns:
>                 for idx, line in enumerate(test.splitlines()):
>                         if line.find(noun) != -1:
>                                 dct.setdefault(noun, []).append(idx)
>
> 'enumerate' ha un secondo parametro opzionale che indica da quale indice
> partire, per esempio se le righe devono essere enumerate a partire da 1.
>
> Forse puoi invertire l'ordine dei loop nel secondo caso per effettuare
> una sola volta la partizione in righe. Inoltre c'è una disparità nei due
> casi: il primo riporta tutte le occorrenze di ciascuna parola mentre il
> secondo non fa' differenza se in una riga ci sono più occorrenze di una
> precisa parola.
>
> ciao
> m.
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130626/4e574fef/attachment.html>


Maggiori informazioni sulla lista Python