Python - Contador de palabras

 
Vista:
Imágen de perfil de juan

Contador de palabras

Publicado por juan (1 intervención) el 10/04/2020 19:58:46
Necesito hacer un contador de palabras me explico :
Tengo un artista y quiero ver cuantas veces se repiten todas las palabras en sus canciones

1
2
3
4
5
6
7
8
9
10
11
12
from collections import Counter
def az(filename):
    with open(filename) as f:
        return
def word_count(filename):
    with open(filename) as f:
        return Counter(f.read().split())
 
counter = word_count('E:/as.txt')
 
for i in counter:
    print(i,':',counter[i])

tengo esto, el problema está en que me cuenta palabras cuando terminan en ",", es decir si en la canción figura "hola," la salida va a ser hola, : 1
y también me diferencia la palabra si tiene 1 letra en mayúscula es decir:

hola : 1
hola, : 1
Hola : 1

lo que quiero hacer es: SACAR TODAS COMAS PUNTOS Y COSAS QUE NO SEAN LETRAS Y CONVERTIR TODO EL ARCHIVO A MINÚSCULA.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Contador de palabras

Publicado por Andrés (55 intervenciones) el 11/04/2020 00:16:12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from collections import Counter
from functools import reduce
 
 
def eliminar_nueva_linea(line):
    return line.rstrip()
 
 
def filtrar_solo_letras_espacio(line):
    solo_letras = filter(lambda c: c.isalpha() or c.isspace(), line)
    return "".join(solo_letras)
 
 
def convertir_a_minusculas(line):
    return line.lower()
 
 
def procesar_archivo(file_name, composicion, counter_handler):
 
    counter = Counter()
 
    try:
        with open(file_name) as f:
            while True:
                line = composicion(next(f))
                counter.update(line.split())
 
    except StopIteration:
        pass
 
    counter_handler(counter)
 
 
def imprimir_resultado(counter):
 
    for k, v in counter.items():
        print(f"{k}: {v}")
 
 
file_name = 'cancion.txt'
 
funciones = [filtra_solo_letras_espacio, eliminar_nueva_linea, convertir_a_minusculas]
 
def composicion(*funciones):
    return reduce(lambda f, g: lambda x: f(g(x)), funciones, lambda x: x)
 
procesar_archivo(file_name, composicion(*funciones), imprimir_resultado)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar