2. Paraules en un text

Dissenya les funcions següents i desa-les al mòdul texts (fitxer texts.py).

texts.compta_paraules_linia(linia, paraules)

linia és el text d’una línia (str).

paraules és una llista de paraules.

Retorna un string que conté parelles formades per una paraula de paraules i el nombre de vegades que surt la paraula a linia. Hi ha d’haver totes les paraules de paraules que surten algun cop a linia i en el mateix ordre en què estan a paraules.

Cal comptar les paraules tant si apareixen senceres com si són un tros d’una paraula més llarga. Les paraules poden aparèixer tant a linia com a paraules amb qualsevol combinació de lletres majúscules i minúscules. Al resultat, han d’aparèixer en minúscules.

Per exemple:


>>> linia = "AMABLE fill, intencio es obra de entenimente de volentat qui s mou \
... a donar compliment a la cosa desirada e entesa. E intencio es actu de natural \
... apetit, qui requer la perfeccio que li coue naturalment."
>>> par = ['amable', 'De', 'IntEnciO', 'ment', 'xilòfon']
>>> r = compta_paraules_linia(linia, par)
>>> r
'amable 1 de 4 intencio 2 ment 3'

Trobaràs més tests al fitxer test-compta_paraules_linia.txt.


texts.escriu_paraules_linies(nftext, paraules, nfresultat)

nftext és el nom d’un fitxer que conté un text.

paraules és una llista de paraules.

nfresultat és el nom del fitxer on s’ha d’escriure el resultat.

Escriu al fitxer nfresultat una línia per cada línia del fitxer nftext que contingui alguna de les paraules de la llista paraules.

El format de les línies del fitxer nfresultat ha de ser: el número de línia del fitxer nftext a què correspon separat per un espai en blanc de les parelles formades per una paraula de paraules i el nombre de vegades que surt la paraula a linia. El format d’aquestes parelles ha de ser el mateix que el resultat de la funció compta_paraules_linia().

Per exemple:


>>> text = """\
... Tenia quatre banderes, tres les vaig perdre en combat; la bandera que fa quatre
... l'he desada en un calaix.
... No la'n trauré fins que bufi ben fort el vent de llevant
... i s'endugui aquest mal aire que ens toca de respirar."""
>>> nft = 'text-0.txt'
>>> with open(nft, 'w') as f: r = f.write(text)

>>> nfr = 'paraules-0.txt'
>>> paraules = ['quatre', 'cinc', 'bander', 'que']
>>> escriu_paraules_linies(nft, paraules, nfr)
>>> with open(nfr, 'r') as f: print(f.read()) 
1 quatre 2 bander 2 que 1
3 que 1
4 que 2

Trobaràs més tests al fitxer test-escriu_paraules_linies.txt.