Corrector de llenguatge (fitxers)

Reprenem l’exercici Corrector de llenguatge. Ara cal que tant els sinònims com el text a corregir estiguin emmagatzemats en fitxers.

Descarrega el mòdul corrector i afegeix-hi les funcions següents:

corrector.llegeix_sinonims(nom_fitxer)

nom_fitxer és el nom d’un fitxer de text en què cada línia conté dues paraules com a mínim. La primera paraula es considera políticament incorrecte i la resta són sinònims políticament correctes.

La funció retorna un diccionari com el de la funció sinonims().

Per exemple, si el fitxer sinonims.txt conté les línies següents:

bonyut malgirbat irregular
sapastre incompetent
capsigrany curt inhàbil
bufanúvols somiador
ximplet beneit bonhome
tararot belluguet turbulent esvalotat

Aleshores:


>>> dicc = llegeix_sinonims('sinonims.txt')
>>> dicc == {
... 'bonyut': ['malgirbat', 'irregular'],
... 'sapastre': ['incompetent'],
... 'capsigrany': ['curt', 'inhàbil'],
... 'bufanúvols': ['somiador'],
... 'ximplet': ['beneit', 'bonhome'],
... 'tararot': ['belluguet', 'turbulent', 'esvalotat'],
... }
True

Nota

Un cop obert el fitxer, prova de cridar la funció sinonims() amb l’objecte fitxer com a argument.

corrector.corregeix_fitxer(nomf_sinonims, nomf_text, nomf_corregit)

nomf_sinonims és el nom d’un fitxer de paraules políticament incorrectes i sinònims políticament correctes com el de llegeix_sinonims(). nomf_text és el nom d’un fitxer que conté el text a corregir i nomf_corregit és el nom del fitxer amb el text corregit.

La funció escriu en el fitxer nomf_corregit el text de nomf_text un cop corregides les paraules políticament incorrectes d’acord amb els sinònims de nomf_sinonims.

Per substituir una paraula políticament incorrecta per un sinònim cal seguir el mateix criteri que en la funció corregeix().

Per exemple, si el fitxer text_pi.txt conté el test següent:

Un bonyut que era un sapastre
va anar a cal capsigrany però
el bufanúvols que era un ximplet
va acabar essent un tararot

Aleshores:


>>> corregeix_fitxer('sinonims.txt', 'text_pi.txt', 'text_pc.txt')
>>> with open('text_pc.txt', 'r') as f: 
...     print(f.read())
Un malgirbat que era un incompetent
va anar a cal inhàbil però
el somiador que era un beneit
va acabar essent un belluguet

Nota

La funció corregeix_linia() et pot resultar útil.

Nota

Disposes de jocs de proves al fitxer test-corrector.txt i d’una solució al fitxer corrector.py