# Xenera´l vocabulariu d'un testu. # Escrito por José A. Corrales 5-dic-2023 # pal diálogu d'apertura de ficheros from tkinter import filedialog def quita_non_lletres(testu): # devuelve un testu pero solo con lletres y espacios # lletres (valen les minúscules) lletres="abcdefghijklmnñopqrstuvwxyz"+"áéíóúü" # p'anotar y nun repetir los caracteres yá cambiaos ya_cambiaos="" for c in testu: if c not in lletres+" "+ya_cambiaos: testu=testu.replace(c," ") # yá se cambió una vez, nun fae falta repetilo ya_cambiaos=ya_cambiaos+c return testu # Programa principal # nome del ficheru a procesar #nome_ficheru="Don Quijote de la Mancha texto.txt" #nome_ficheru=input("nome del ficheru a procesar: ") nome_ficheru=filedialog.askopenfilename( title="Seleccione'l nome del ficheru a analizar", filetypes=(("ficheros de testu","*.txt"),) ) if nome_ficheru=="": print("nun s'especificó un ficheru pa analizar") exit() # llectura de datos ficheru=open(nome_ficheru) testu=ficheru.read() # too na misma cadena ficheru.close() # se pasa too a minúscules testu=testu.lower() # eliminación de tolo que nun son lletres y espacios testu=quita_non_lletres(testu) # nesti puntu tenemos una cadena con solo lletres y espacios, # se xenera una llista llista_palabres=testu.split() # eliminación de duplicaos y obtención de una llista ordenada llista_ordenada=sorted(set(llista_palabres)) # resultaos, númberu de veces y palabra # importante: les lletres acentuaes y les qu'entamen per ñ van dir al final for palabra in llista_ordenada: print(f"{llista_palabres.count(palabra):5} {palabra}") print("total",len(llista_ordenada),"palabres distintes d'un total de",\ len(llista_palabres),"nel testu","'"+nome_ficheru.split("/")[-1]+"'")