[Python] ricerca di stringhe in un testo

Marco Giusti marco.giusti a gmail.com
Mer 26 Giu 2013 15:52:41 CEST


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.


Maggiori informazioni sulla lista Python