# Cuenta artículos determinaos nun testu. # Versión 2: # - pidi nome del ficheru # - optimización de la sustitución # Versión 3: # - pidi nome del ficheru col ratón # - función pa eliminar lo que nun son lletres y espacios # Versión 4: # - cuenta por separao cada artículu # Escrito por José A. Corrales 28-nov-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() # llista d'artículos articulos="el la lo los las".split() # contadores: unu por cada artículu contadores=[0]*len(articulos) # 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 llista_palabres=testu.split() # cuenta artículos y muestra resultaos for i in range(len(articulos)): contadores[i]=contadores[i]+llista_palabres.count(articulos[i]) print(articulos[i],contadores[i]) # resultaos print("hai",sum(contadores),"artículos determinaos nel ficheru",nome_ficheru)