Punto 1:
??? ¿para cada término de la línea? ¿No será "para cada término de la lista de términos"?
Punto 2:
No hay separación entre las líneas, usen \n para generar un salto de línea en el texto o de lo contrario estarán leyendo una sola línea del archivo.
Punto 3:
Este if debería estar sangrado un nivel menos, al mismo nivel del for en vez de dentro de él. Piensen por qué.
Punto 4:
están pasando la variable "terminos" como una cadena, por lo que al hacer "for termino in terminos" están iterando por cada caracter de la misma. Deben usar split() para separar la cadena de términos por espacios e iterar por palabras.
En cuanto a considerar solamente palabras completas, una solución posible es partir también la cadena a analizar con split(), para eliminar los espacios y obtener las palabras, pudiendo luego comparar cada palabra con cada término y utilizar eso para sumar puntos.
Aquí les dejo una versión arreglada con los detalles que les mencioné antes:
Código Python:
Ver originaldef buscar(terminos, archivo):
mejor = ""
puntos_mejor =0
for linea in archivo:
puntos_actual = 0
for termino in terminos:
print "_BUSCANDO_", termino, "_EN_", linea
puntos = linea.count(termino)
print "_", str(puntos), "PUNTOS_"
puntos_actual += puntos
if puntos_actual > puntos_mejor:
mejor = linea
puntos_mejor = puntos_actual
return mejor
a = open("noticias.txt")
terminos = ["ayer", "la"]
r = buscar(terminos, a)
print "RESULTADO: ", r
a.close()