Python - Saber si una columna tiene valor en archivo csv

   
Vista:

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 18/10/2015 06:04:30
Buenas espero me puedan ayudar, tengo un archvo csv que lo puedo leer con pytho
1
2
3
4
5
import csv
with open('archivo.csv') as csvarchivo:
    entrada = csv.reader(csvarchivo, dialect='unix', delimiter='|')
    for reg in entrada:
        print(reg[0])

el resultado que me da es este.

img

mi pregunta es, como al leer linea por linea saber si estan cargandos los dos email, y si el sexo es M o F.

y apartir de eso poder generar otro archivo csv pero con dos nuevas lineas que diga el sexo y si tiene los dos mail

muchas gracias.
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 xve

Saber si una columna tiene valor en archivo csv

Publicado por xve (1229 intervenciones) el 18/10/2015 11:33:10
Hola Juan Manuel, por ejemplo, para verificar el tema del sexó, seria algo así:
1
2
3
4
5
6
7
8
9
10
import csv
 
with open('archivo.csv') as csvarchivo:
	entrada = csv.reader(csvarchivo, dialect='unix', delimiter='|')
	for reg in entrada:
		valores=reg[0].split(";")
		if valore[3] in ["M", "F"]:
			print "Es un ",valore[3]
		else:
			print "No esta definido el sexo"

Te sirve?
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 18/10/2015 16:18:52
Como te va XVE? gracias de nuevo por comentar. Probe el codigo que me pasaste, pero me aparece el siguiente error

img

Estoy empezando en esto de python por eso tantas preguntas.
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 xve

Saber si una columna tiene valor en archivo csv

Publicado por xve (1229 intervenciones) el 18/10/2015 19:59:02
Hola Juan, perdóname, me equivoque al publicar el código... te puse valore en vez de valores
1
2
3
4
5
6
7
8
9
10
import csv
 
with open('archivo.csv') as csvarchivo:
	entrada = csv.reader(csvarchivo, delimiter='|')
	for reg in entrada:
		valores=reg[0].split(";")
		if valores[3] in ["M", "F"]:
			print "Es un ",valores[3]
		else:
			print "No esta definido el sexo"
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel (8 intervenciones) el 18/10/2015 22:43:07
ahora si XVE, yo tampoco me percate que era solo el nombre de la variable el problema.

Muchas gracias.
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 19/10/2015 23:07:16
Que tal XVE, una conulta mas si no te es mucho problema.
Ya lei el archivo y pude saber si es hombre o mujer y si sus correos estan cargados con el siguiente codigo
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
import csv
with open('archivo.csv') as csvarchivo:
    entrada = csv.reader(csvarchivo, delimiter='|')
    for reg in entrada:
        #declarar variables
        sexo = ""
        correos = 0
        dummy    = 0
        #crear mi array
        valores=reg[0].split(";")
        #verificar correos
        if valores[4] == "":
            dummy  = 1
        else:
            correos = 1
        if valores[5] == "":
            dummy = 1
        else:
            correos = correos + 1
        #verificar el sexo    
        if  valores[3] == "M":
            sexo = "MASCULINO"
        else:
 
         if   valores[3] == "F":
                sexo = "FEMENINO"
        print (valores[0],";",valores[1],";",valores[2],";",valores[3],";",valores[4],";",valores[5],";",correos,";",sexo)
al final imprimo con dos nuevas columnas la cantidad de correos cargados y el sexo.
me imprime esto

q
ahora quiro crear un nuevo archivo csv con los mismo datos pero las dos nuevas columnas, intente con esto al final
1
2
3
4
5
6
7
datos = [valores[0]]
csvsalida = open('salidat.csv', 'w', newline='')
salida = csv.writer(csvsalida)
salida.writerow(['Nro_soc'])
salida.writerows(datos)
del salida
csvsalida.close()
pero solo me guarda el ultimo registro del archivo.csv
como ejemplo solo pongo para guardar valores[0]
Muchas gracias.
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 xve

Saber si una columna tiene valor en archivo csv

Publicado por xve (1229 intervenciones) el 20/10/2015 08:49:50
Si, es correcto, porque esta grabación, entiendo que la haces cuando finaliza el bucle, por lo que la variable valores tiene el ultimo valor.

Tendrías que realizar la grabación en cualquiera de las iteraciones del bucle... es decir tendrías que hacer una grabación cada vez que la variable valores cambia de valor.

No se si me he sabido explicar...
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 20/10/2015 19:57:49
Si muy bien explicado XVE, por si a alguien le sriva dejo el codigo.
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
import csv
with open('archivo.csv') as csvarchivo:
    entrada = csv.reader(csvarchivo, delimiter='|')
    csvsalida = open('rp24877460.csv', 'w', newline='')
    salida = csv.writer(csvsalida)
    for reg in entrada:
        #declarar variables
        valores=reg[0].split(";")
        sexo = ""
        correos = 0
        dummy    = 0
        #crear mi array
 
        #verificar correos
        if valores[4] == "":
            dummy  = 1
        else:
            correos = 1
        if valores[5] == "":
            dummy = 1
        else:
            correos = correos + 1
        #verificar el sexo    
        if  valores[3] == "M":
            sexo = "MASCULINO"
        else:
 
         if   valores[3] == "F":
                sexo = "FEMENINO"
 
        datos = [(valores[0],valores[1],valores[2],valores[3],valores[4],valores[5],correos,sexo)]
        salida.writerows(datos)
        print (valores[0],";",valores[1],";",valores[2],";",valores[3],";",valores[4],";",valores[5],";",correos,";",sexo)
 
del salida
csvsalida.close()
con esto se lee un archivo csv y poder realizar algunas operaciones con su datos.
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
Imágen de perfil de xve

Saber si una columna tiene valor en archivo csv

Publicado por xve (1229 intervenciones) el 20/10/2015 20:13:51
Gracias por compartirlo!!!
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

Saber si una columna tiene valor en archivo csv

la variable dummy para que es? o mejor dicho que funcion cumple esa variable?
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 20/10/2015 23:01:32
Realmente no cumple ninguna funcion Ricardo, solo lo puse alli ya que me daba un error si dejaba la condicion sin hacer nada.
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

Saber si una columna tiene valor en archivo csv

Ok te sorprenderia si te dijiera que tambien estoy en el mismo curso..
Man.. mira me sale esto..
1
2
3
4
Traceback (most recent call last):
  File "C:/Users/Usuario/Documents/Sistemas_Base_De_Datos_Avanzados/rp25254806.py", line 14, in <module>
    if valores[4] == "":
IndexError: list index out of range
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 21/10/2015 00:21:20
Entonces te va servir el código, cambiando algunas cosas siempre...
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

Saber si una columna tiene valor en archivo csv

Publicado por Ricardo Valenzuela (6 intervenciones) el 21/10/2015 00:34:41
Man.. mira me sale esto..
Traceback (most recent call last):
File "C:/Users/Usuario/Documents/Sistemas_Base_De_Datos_Avanzados/rp25254806.py", line 14, in <module>
if valores[4] == "":
IndexError: list index out of range
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

Saber si una columna tiene valor en archivo csv

Publicado por Juan Manuel jmanuel.arguello@gmail.com (8 intervenciones) el 21/10/2015 01:08:14
Me podes enviar el código completo a mi correo jmanuel.arguello@gmail.com para ver , y si continua el problema creó que XVE no tendrá problemas para ayudar..
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 xve

Saber si una columna tiene valor en archivo csv

Publicado por xve (1229 intervenciones) el 21/10/2015 08:25:25
Hola Ricardo, este error, te lo da, porque el array valores, no dispone del indice 4... una manera para que no te de este error es comprobar la longitud...:

1
if len(valores)>4 && valores[4] == "":

Coméntanos, ok?
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