Python - Archivo .txt que solo lea una linea especifica

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

Archivo .txt que solo lea una linea especifica

Publicado por Isaac (2 intervenciones) el 08/04/2021 19:11:31
Se tiene el archivo correos_eval.txt, que contiene información de estudiantes de la universidad, se necesita escribir un programa que permita crear un nuevo archivo de texto de nombre mail.txt, el cual debe contener el correo de cada estudiante, uno por línea.
Como lo podría hacer por favor
Adjunto el archivo esta .rar pero ahí el archivo txt
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 Plutarco
Val: 45
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Archivo .txt que solo lea una linea especifica

Publicado por Plutarco (24 intervenciones) el 08/04/2021 19:53:00
Buenas tardes

Para abrir tu archivo de texto::
1
2
3
archi1=open("correos_eval.txt","r")
contenido=archi1.read()
archi1.close()

Para abrir el archivo de escritura:
1
archi2 = open("mail.txt","w")

Ya que está el contenido de tu archivo en tu variable solo tienes que buscar el correo, en este caso puedes ir buscando cada salto de línea y entonces evaluar si se encuentra el caracter "@", si es el caso entonces ya tienes la línea con correo.

Para guardar una línea en tu archivo de escritura:
1
archi2.write("línea escrita.\n")

la "\n" le indica a tu fichero que haga un salto de línea

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
Imágen de perfil de Damian
Val: 45
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Archivo .txt que solo lea una linea especifica

Publicado por Damian (6 intervenciones) el 09/04/2021 09:35:55
Este codigo hacer lo que pides:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import re
 
def es_correo_valido(correo):
    expresion_regular = r"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])"
    return re.match(expresion_regular, correo) is not None
 
 
if __name__ == "__main__":
 
    f = open("correos_eval.txt")
    g = open("mail.txt","w")
    linea = f.readline()
    while linea != "":
 
        #  if re.match('^[(a-z0-9\_\-\.)]+@[(a-z0-9\_\-\.)]+\.[(a-z)]{2,15}$', linea.lower()):
 
        if es_correo_valido(linea):
            g.write(linea)
 
        linea = f.readline()
 
    g.close()
    f.close()
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 Damian
Val: 45
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Archivo .txt que solo lea una linea especifica

Publicado por Damian (6 intervenciones) el 09/04/2021 09:54:58
me falto definir encoding en open()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import re
 
def es_correo_valido(correo):
    expresion_regular = r"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])"
    return re.match(expresion_regular, correo) is not None
 
 
if __name__ == "__main__":
 
    f = open("correos_eval.txt", encoding="utf8")
    g = open("mail.txt","w")
    linea = f.readline()
    while linea != "":
 
        #  if re.match('^[(a-z0-9\_\-\.)]+@[(a-z0-9\_\-\.)]+\.[(a-z)]{2,15}$', linea.lower()):
 
        if es_correo_valido(linea):
            g.write(linea)
 
        linea = f.readline()
 
    g.close()
    f.close()
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