Saben como puedo quitarle esto?

Iniciado por Panic0, 30 Enero 2021, 22:27 PM

0 Miembros y 2 Visitantes están viendo este tema.

Panic0

Hola,estoy haciendo un sistema de registro de usuarios,y todo funciona perfecto...Pero tengo un pequeño problema

Resulta que después de que se crea un nuevo usuario y se guarda dentro de un archivo,al final de la linea queda un espacio.

Y lo que quiero y estoy tratando de hacer que no salga eso.

Hasta ahora tengo esto

def nueva_clave(nombre_archivo_txt):
   archivo_txt = open(nombre_archivo_txt, 'r')
   lineas_del_archivo = archivo_txt.readlines()
   total_clientes = len(lineas_del_archivo)
   if total_clientes > 0:
       for linea in range(total_clientes):
           el_cleinte = lineas_del_archivo[linea]
           cliente_leido = el_cleinte.split(' ')

       ultima_clave  = cliente_leido[0]
       ultima_clave  = int(ultima_clave) + 1
       ultima_clave  = str(ultima_clave)
       archivo_txt.close()
       return ultima_clave
   else:
       return '1'


def cliente(nombre_archivo_txt):
   cliente = []
   numero_cliente = nueva_clave(nombre_archivo_txt)
   while True:
       agregar = input(f'Numero de cliente actual {int(numero_cliente) - 1} Agrega uno nuevo (s/n) ? ): ')
       if agregar.lower() == 'n':
           break
       elif agregar.lower() == "s":
           archivo_txt = open(nombre_archivo_txt,"a")
           print(f"Numero del nuevo cliente {int(numero_cliente)}")
           apellido_cliente =  input("Ingrese el apellido del cliente: ")
           nombre_cliente   =  input("Ingrese el nombre del cliente: ")
           direccion        =  input("Ingrese la direccion: ")
           saldo            =  input("Ingrese su saldo (ej:1.500): ")

           apellido_cliente = apellido_cliente.strip(" ")
           nombre_cliente = nombre_cliente.strip(" ")
           direccion = direccion.strip(" ")
           
           cliente.append(numero_cliente)
           cliente.append(apellido_cliente)
           cliente.append(nombre_cliente)
           cliente.append(direccion)
           cliente.append(saldo)



           saldo = str(saldo)

           for data in cliente:
               archivo_txt.write(data+" ")

           cliente[3] = float(saldo)

           archivo_txt.write('\n')
         
           cliente = []
           archivo_txt.close()
           

if __name__ == "__main__":
   nombre_archivo_txt = "prueba.txt"
   cliente(nombre_archivo_txt)


Esto dentro del archivo crea algo como esto:
1 lopez juan FairFax 1.900 (Y al final (en el saldo) le hace un espacio)


Si me pueden dar una mano seria uf genial.  :-*
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

¿es un chiste? si vos lo estás generando con el código:
Código (python) [Seleccionar]
archivo_txt.write(data + " ")

hay muchas formas de solucionar esto, una fácil sin cambiar tu lógica de programación sería:

Código (python) [Seleccionar]

for data in cliente:
                if cliente.index(data) != len(cliente)-1:
                    archivo_txt.write(data + " ")
                else:
                    archivo_txt.write(data)



el tema parece ser que no estás entendiendo lo que estás haciendo.

Panic0

#2
Cita de: tincopasan en 31 Enero 2021, 00:40 AM
¿es un chiste? si vos lo estás generando con el código:
Código (python) [Seleccionar]
archivo_txt.write(data + " ")

hay muchas formas de solucionar esto, una fácil sin cambiar tu lógica de programación sería:

Código (python) [Seleccionar]

for data in cliente:
               if cliente.index(data) != len(cliente)-1:
                   archivo_txt.write(data + " ")
               else:
                   archivo_txt.write(data)



el tema parece ser que no estás entendiendo lo que estás haciendo.

Noup,eso no lo genera,por que tenía otro codigo exactamente igual y ese espacio simplemente no se genera... ;)

Citar¿es un chiste? si vos lo estás generando con el código:
Código (python) [Seleccionar]
archivo_txt.write(data + " ")

En cuanto a tu code,lo voy a probar

Gracias por la respuesta amigo ;)

Pd:y si,entiendo perfectamente lo que estaba haciendo lmao  :xD  :laugh: :laugh:
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

CitarNoup,eso no lo genera,por que tenía otro codigo exactamente igual y ese espacio simplemente no se genera... ;)

1)ahhh mira vos, ponele una a, algo así:
Código (python) [Seleccionar]
archivo_txt.write(data + " a")

y después contame que no es esa línea lo que genera los espacios

Panic0

Cita de: tincopasan en 31 Enero 2021, 03:03 AM
1)ahhh mira vos, ponele una a, algo así:
Código (python) [Seleccionar]
archivo_txt.write(data + " a")

y después contame que no es esa línea lo que genera los espacios

Creo que esto me define  "No existen las preguntas tontas, solo las personas tontas"

En fin,tenías razón,perdón por no llevarte la palabra ;(
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

Panic0

Cita de: tincopasan en 31 Enero 2021, 00:40 AM
¿es un chiste? si vos lo estás generando con el código:
Código (python) [Seleccionar]
archivo_txt.write(data + " ")

hay muchas formas de solucionar esto, una fácil sin cambiar tu lógica de programación sería:

Código (python) [Seleccionar]

for data in cliente:
                if cliente.index(data) != len(cliente)-1:
                    archivo_txt.write(data + " ")
                else:
                    archivo_txt.write(data)



el tema parece ser que no estás entendiendo lo que estás haciendo.

Dude,eso si,existe la posibilidad de que me puedas explicar mas a detalle que es lo que hace cada una de estas cosas?

Tengo entendido que el index te tira la primera posición de algo en una lista
pero por que como argumento "data"?

Despues el len devuelve la longitud de un string o tambien el número de elementos de una lista.

Y por que + 1¿¿¿???

Código (python) [Seleccionar]

for data in cliente:
                if cliente.index(data) != len(cliente)-1:
                    archivo_txt.write(data + " ")
                else:
                    archivo_txt.write(data)

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

CitarTengo entendido que el index te tira la primera posición de algo en una lista

en listas, tuplas y cadenas
ejemplos de index:

Código (python) [Seleccionar]
a = (1,2,3,4) #tupla
b = "cadena"  #cadena
print(a.index(3))
print(b.index("n"))   


omití listas por ser más que obvia.

Citarpero por que como argumento "data"?

porque como está expresado en el ejemplo es obligatorio pasarle un elemento que se encuentre en la lista.

Código (python) [Seleccionar]
a=(1,2,3,4)
print(a.index(5))


dará un error ya que 5 no está en la lista, en este caso data está en la lista.

CitarDespues el len devuelve la longitud de un string o tambien el número de elementos de una lista.

len devuelve el largo de un objeto, sea este una sequencia o una colección, por lo tanto:
cadenas,tuplas,listas,diccionarios pueden ser pasados como objetos

Código (python) [Seleccionar]
c= {1:"uno",2:"dos"}
print(len(c))

etc.

CitarY por que + 1¿¿¿???

no es "+" es "-"

tu lista es de 5 elementos:
[1,2,3,4,5]   
len devolverá 5 pero mientras sea distinta de  4 (5 -1) hará algo y cuando sea mayor otra cosa

a pesar de lo que muchos se esfuerzan en repetir la documentación de python es extensa, solo hay que leerla.



Panic0

Cita de: tincopasan en 31 Enero 2021, 07:17 AM
en listas, tuplas y cadenas
ejemplos de index:

Código (python) [Seleccionar]
a = (1,2,3,4) #tupla
b = "cadena"  #cadena
print(a.index(3))
print(b.index("n"))   


omití listas por ser más que obvia.

porque como está expresado en el ejemplo es obligatorio pasarle un elemento que se encuentre en la lista.

Código (python) [Seleccionar]
a=(1,2,3,4)
print(a.index(5))


dará un error ya que 5 no está en la lista, en este caso data está en la lista.

len devuelve el largo de un objeto, sea este una sequencia o una colección, por lo tanto:
cadenas,tuplas,listas,diccionarios pueden ser pasados como objetos

Código (python) [Seleccionar]
c= {1:"uno",2:"dos"}
print(len(c))

etc.

no es "+" es "-"

tu lista es de 5 elementos:
[1,2,3,4,5]   
len devolverá 5 pero mientras sea distinta de  4 (5 -1) hará algo y cuando sea mayor otra cosa

a pesar de lo que muchos se esfuerzan en repetir la documentación de python es extensa, solo hay que leerla.




Muy bien explicado,te tengo que dar un enorme gracias por tomarte tu tiempo de responder,ya que seguro tenes cosas mas importantes que hacer en vez de estar respondiendo cosas de un chaval novato jajaja

En fin,que tengas un excelente día u noche  ;D
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.