Tengo un archivo CSV names.csv

First_name, Last_name
Mike, Hughes
James, Tango
, Stoke
Jack,
 ....etc

Lo que quiero es poder tomar la primera letra de First_name y la Last_name completa y mostrarla en la pantalla como nombres de usuario, pero no incluir a las personas con First_name y {{X3} } la propiedad está vacía. Estoy completamente atrapado, cualquier ayuda sería muy apreciada

import csv 
ifile = open('names.csv', "rb") 
reader = csv.reader(ifile) 
rownum = 0 
for row in reader: 
    if rownum == 0: 
        header = row 
    else: 
        colnum = 0 
for col in row: 
    print '%-8s: %s' % (header[colnum], col) 
    colnum += 1 
    rownum += 1 
ifile.close()

Intento n. ° 2

import csv
dataFile = open('names.csv','rb')
reader = csv.reader(dataFile)
next(reader, None)
for row in reader: 
    if (row in reader ) 
        print (row[0])

No he guardado muchos intentos porque ninguno de ellos ha funcionado: S

0
JamesMay 11 dic. 2015 a las 08:59

3 respuestas

La mejor respuesta
import csv
dataFile = open('names.csv','rb')
reader = csv.reader(dataFile, delimiter=',', quoting=csv.QUOTE_NONE)

for row in reader: 
    if not row[0] or not row[1]:
        continue
    print (row[0][0] + row[1]).lower()

O

import csv
dataFile = open('names.csv','rb')
reader = csv.reader(dataFile, delimiter=',', quoting=csv.QUOTE_NONE)

[(row[0][0] + row[1]).lower() for row in reader if 
                                      row[0] and row[1]]
0
Simone Zandara 11 dic. 2015 a las 07:21

Tal vez asi

from csv import DictReader

with open('names.csv') as f:
    dw = DictReader(f, skipinitialspace=True)

    fullnames = filter(lambda n: n['First_name'] and n['Last_name'], dw)
    for f in fullnames:
        print('{}{}'.format(f['First_name'][0], f['Last_name']))

Tiene encabezados en su csv, así que use un DictReader y simplemente filtre aquellos cuyos nombres o apellidos estén vacíos y muestre los nombres restantes.

0
Paul Rooney 11 dic. 2015 a las 06:41

Una vez que obtenga el texto de .csv, puede usar la función split () para dividir el texto por las nuevas líneas. Su texto de muestra es un poco inconsistente, pero si entiendo su pregunta correctamente, puede decir

import csv
dataFile = open('names.csv','rb')
reader = csv.reader(dataFile)
reader = reader.split('\n')
for x in reader
    print(reader[x])

O si desea dividirlo por comas, simplemente reemplace '\ n' con ','

0
MANA624 11 dic. 2015 a las 06:37
34217039