Construyendo lista de listas desde archivo CSV

Tengo un archivo de Excel (que estoy exportando como un csv) que quiero analizar, pero tengo problemas para encontrar la mejor manera de hacerlo. El csv es una lista de computadoras en mi red, y qué cuentas están en el grupo de administradores locales para cada una. He hecho algo similar con las tuplas, pero el número de cuentas para cada computadora varía de 1 a 30. Quiero crear una lista de listas, luego revisar cada lista para encontrar las cuentas que deberían estar allí (Administrador, etc.) y elimínelos, para que luego pueda exportar una lista de solo cuentas que no deberían ser un administrador local, pero sí lo son. El archivo csv tiene el siguiente formato:

"computer1" Administrator localadmin useraccount "computer2" localadmin Administrator "computer3" localadmin Administrator user2account 

Cualquier ayuda sería apreciada

EDITAR: Aquí está el código con el que estoy trabajando

 import csv import sys #used for passing in the argument file_name = sys.argv[1] #filename is argument 1 with open(file_name, 'rU') as f: #opens PW file reader = csv.reader(f) data = list(list(rec) for rec in csv.reader(f, delimiter=',')) #reads csv into a list of lists f.close() #close the csv for i in range(len(data)): print data[i][0] #this alone will print all the computer names for j in range(len(data[i])) #Trying to run another for loop to print the usernames print data[i][j] 

El problema es con el segundo bucle for. Quiero poder leer en cada línea y, por ahora, simplemente imprimirlas.

Esto debería ponerte en el camino correcto:

 import csv import sys #used for passing in the argument file_name = sys.argv[1] #filename is argument 1 with open(file_name, 'rU') as f: #opens PW file reader = csv.reader(f) data = list(list(rec) for rec in csv.reader(f, delimiter=',')) #reads csv into a list of lists for row in data: print row[0] #this alone will print all the computer names for username in row: #Trying to run another for loop to print the usernames print username 

Las dos últimas líneas imprimirán toda la fila (incluida la “computadora”). Hacer

 for x in range(1, len(row)): print row[x] 

… para evitar imprimir la computadora dos veces.

Tenga en cuenta que f.close () no es necesario cuando se utiliza la construcción “with” porque el recurso se cerrará automáticamente cuando se salga del bloque “with”.

Personalmente, yo solo haría:

 import csv import sys #used for passing in the argument file_name = sys.argv[1] #filename is argument 1 with open(file_name, 'rU') as f: #opens PW file reader = csv.reader(f) # Print every value of every row. for row in reader: for value in row: print value 

Esa es una forma razonable de recorrer los datos y debería darle una base firme para agregar cualquier lógica adicional que se requiera.

Así es como abrí un archivo .csv e importé columnas de datos como matrices numpy: naturalmente, no necesita matrices numpy, pero …

 data = {} app = QApplication( sys.argv ) fname = unicode ( QFileDialog.getOpenFileName() ) app.quit() filename = fname.strip('.csv') + ' for release.csv' #open the file and skip the first two rows of data imported_array = np.loadtxt(fname, delimiter=',', skiprows = 2) data = {'time_s':imported_array[:,0]} data['Speed_RPM'] = imported_array[:,1]