Python - Contar frecuencia de palabra en txt

 
Vista:

Contar frecuencia de palabra en txt

Publicado por Josafat Corona (2 intervenciones) el 12/11/2018 18:21:34
Hola, alguién puede ayudarme a sacar la frecuencia de una palabra dentro de un archivo txt, en mi código el problema es que si hay dos o más palabras en una línea de texto solo cuenta una, y quiero que ni importe que estén en mayúsculas o minúsculas la misma palabra igual la cuente, abajo dejo mi código.
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
import bs4 as bs
from bs4 import BeautifulSoup
import urllib.request
import os, re
from bs4 import Comment
estado=1
url=input("URL: ")
palabra = input("Palabra:")
try:
	sauce=urllib.request.urlopen(url).read()
except:
	estado=0
	print("No se pudo acceder a: ", url)
if estado:
 
	def cleanMe(html):
	    soup = BeautifulSoup(html,"lxml")
	    for s in soup(['script', 'style']):
 
	        s.decompose()
 
	    return ' '.join(soup.stripped_strings)
 
 
	soup = cleanMe(sauce)
	#print(soup)
	#print (cleaned)
	#soup = BeautifulSoup(sauce, 'html.parser')
	#print(soup.get_text())
	txt=soup#.get_text()
	file = open("cont.txt", "w")
	file.write(txt)
	file.close()
	cont=0
 
	for line in open("cont.txt"):
		if palabra in line:
			print (line)
			cont=cont+1
 
	print ("La palabra: \"",palabra,"\" se repite", cont," veces.")
	print(cont)
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: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Contar frecuencia de palabra en txt

Publicado por tincopasan (1082 intervenciones) el 13/11/2018 05:12:19
me causa gracia la cantidad de bibliotecas que importas y no usas, entre ellas re ,de donde copiaste el script lo que pides debería estar.
en fin, es muy simple:
1)modificar esta línea:
1
palabra = input("Palabra:")
por esta:
1
palabra = input("Palabra:").lower()

2)y para terminar cambiar por esto:
1
2
3
4
5
6
for line in open("cont.txt"):
    regex = re.compile(palabra )
    match = len(regex.findall(line.lower()))
    cont+=match
 
print ('La palabra: "{}" se repite "{}" veces'.format(palabra,cont))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 27
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Contar frecuencia de palabra en txt

Publicado por Josafat (18 intervenciones) el 13/11/2018 17:36:23
Muchas gracias, me ha servido mucho
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