Python - Letra canción

 
Vista:
sin imagen de perfil
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Letra canción

Publicado por Miguel (1 intervención) el 01/10/2016 13:16:49
Un programa que cuente cuantas veces se repite "th" en una canción y que no cuenten "TH","tH"... Solo en minúscula. La canción la tengo guardada en un bloc de notas. Como podría hacer para que me cuente dichos carácteres de un fichero externo?
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: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Letra canción

Publicado por Miguel (20 intervenciones) el 01/10/2016 20:08:06
El programa es este

1
2
3
4
5
6
7
8
9
def lyrics(fitxer):
    f = open(fitxer,"r")
    text = f.readlines()
    f.close()
    for line in text:
        print line,
    print
 
lyrics("lletra.txt")

Y en pantalla imprime esto:

Wicked Man's Rest
Walk You Home
Things You've Never Done
Girl I Once Knew
Do What You Like
Needle In The Dark
Four Horses
You're On My Mind
For You
Walk In The Rain
Table For One


Alguien me podría decir como contar cuantos carácteres aparecen? Por ejemplo "or" aparece X veces
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
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Letra canción

Publicado por kip (257 intervenciones) el 01/10/2016 21:28:52
Hola, he hecho un codigo a ver si te sirve basandome en el que posteaste arriba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def lyrics(fitxer, search_str, caseInsen = False):
    f = open(fitxer,"r")
    text = f.readlines()
    f.close()
    cont = 0
    for lines in text:
        for line in lines.split():
            found = re.findall(search_str, line, re.I) if(caseInsen) else re.findall(search_str, line)
            if found:
                cont += 1
    if cont > 1:
        return "El caracter o cadena '%s' aparece %s veces en el archivo" % (search_str, cont)
    elif cont == 0:
        return "El caracter o cadena '%s' no aparece en el archivo" % (search_str)
    else:
        return "El caracter o cadena '%s' aparece %s vez en el archivo" % (search_str, cont)
 
print lyrics("lyrics.txt", "On")

Te mostrara cuantas veces se repite en caracter en todo el archivo, por ejemplo 'On' se repite tres veces, debes tener en cuenta que tomara en cuenta mayusculas y minusculas, si quieres evadir estas y buscar sin importarte aquello puedes pasarle como tercer argumento a la funcion el boolean True, algo asi:

1
print lyrics("lyrics.txt", "On", True)

En tal caso te mostrara que 'On' aparece 4 veces.

Espero te sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Letra canción

Publicado por kip (257 intervenciones) el 01/10/2016 21:47:25
Olvide mencionar que debes colocar al inicio del script python la linea:

1
import re

Para poder usar las funciones regex.
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
sin imagen de perfil
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Letra canción

Publicado por Miguel (1 intervención) el 02/10/2016 13:08:33
Muchísimas gracias de verdad! Y una última cosa, espero que no te sea pesado jaja. Si quiero que me imprima el número de palabras, como lo debería hacer?
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
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Letra canción

Publicado por kip (257 intervenciones) el 02/10/2016 17:26:46
Bueno, en ese caso podrias seuir usando la misma estructura anterior pero variar ciertas lineas, asi tal vez:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def countWords(fitxer):
    f = open(fitxer,"r")
    text = f.readlines()
    f.close()
    cont = 0
    for lines in text:
        found = re.findall("([a-z\']+)", lines.strip(), re.I)
        if found:
           cont += len(found)
    if cont > 1:
        return "El archivo tiene %s palabras" % cont
    elif cont == 0:
        return "El archivo esta vacio"
    else:
        return "El archivo tiene %s palabra" % cont

Si te fijas he hecho una busqueda usando regex de solo palabras, evitando asi contar algun caracter como ',' o ';', ademas de eso no tomara en cuenta ningun caracter numerico y agregue para que tome en cuenta las palabras que tienen apostrofe.

Debes usarla como en el caso anterior:

1
print (countWords("lyrics.txt"))

Espero te sirva.

Saludos
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