Python - Ayuda para comparar txt con variable

   
Vista:

Ayuda para comparar txt con variable

Publicado por Sergio (4 intervenciones) el 29/03/2015 04:55:03
Buenas noches miembros de la comunidad de python.

Estoy trabajando en un pequeño proyecto para la Universidad y me he topado con un problema. Necesito que una función compare una linea de un documento de texto con una variable que el usuario ingrese.
Esta es la función que tengo por el momento:

def usuarioExistente(nombre):
datos = open('Usuarios.txt', 'r')
linea = datos.readline()
while linea != " ":
if nombre != " ":
if nombre != linea:
valido = 1
elif nombre == linea:
valido = 0
else:
valido = 0
linea = datos.readline()
datos.close()
return valido

Por alguna razón el resultado siempre es "valido = 1 ", aún cuando la variable coincide con algún valor ya guardado en el documento de texto.
Desde ya les agradezco cualquier ayuda que me puedan ofrecer.
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
Imágen de perfil de Alejandro

Ayuda para comparar txt con variable

Publicado por Alejandro (84 intervenciones) el 29/03/2015 05:37:29
Hola que tal. Esto posibliemente se deba a que la linea contenga un salto de linea: \n. Y debido a esto no este haciendo la verificacion correctamente. Tienes dos opciones simples: 1.-Le agregas un salto de linea a la variable nombre al final de la cadena o 2.-Le quitas el salto de linea a la cadena que viene de readline()
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

Ayuda para comparar txt con variable

Publicado por Sergio (4 intervenciones) el 29/03/2015 18:17:56
Muchas gracias, la solución que he tomado ha sido agregar un salto de linea a la variable y ha funcionado perfectamente. Ahora el problema que tengo es que el programa solo compara la variable con la ultima linea del txt. Los cambios que realice fueron:
datos = open('Usuarios.txt', 'r')
linea = datos.readline()
while linea != "":
if nombre != "":
if nombre+ '\n' != linea:
valido = 1
linea = datos.readline()
elif nombre+ '\n' == linea:
valido = 0
linea = datos.readline()
else:
valido = 0
linea = datos.readline()
datos.close()
return valido
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 Alejandro

Ayuda para comparar txt con variable

Publicado por Alejandro (84 intervenciones) el 29/03/2015 19:14:05
El problema está en que cuando el nombre de usuario es encontrado el bucle no se rompe, es decir, sigue comparando los valores aún después de haber encontrado el nombre. Es por eso que te devuelve el valor de la línea final. Para romper el bucle puedes usar break o return
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