2015-06-19 23 views
5

Ho un file CSV che ha determinate colonne che ho bisogno di estrarre. Una di queste colonne è una stringa di testo da cui ho bisogno di estrarre il primo e l'ultimo elemento. Ho una dichiarazione di stampa in un ciclo for che ottiene esattamente ciò di cui ho bisogno ma non riesco a capire come ottenere quei dati in un elenco o dettare. Non sono sicuro quale sia il migliore da usare.Python CSV legge il file e seleziona le colonne e scrive nel nuovo file CSV

Codice finora:

f1 = open ("report.csv","r") # open input file for reading 
users_dict = {} 
with open('out.csv', 'wb') as f: # output csv file 

writer = csv.writer(f) 
with open('report.csv','r') as csvfile: # input csv file 
    reader = csv.DictReader(csvfile, delimiter=',') 
    for row in reader: 
     print row['User Name'],row['Address'].split(',')[0],row['Last Login DateTime'],row['Address'].split(',')[7] 
     users_dict.update(row) 
     #users_list.append(row['Address'].split(',')) 
     #users_list.append(row['Last Login DateTime']) 
     #users_list.append(row[5].split(',')[7]) 

print users_dict 

f1.close() 

Input da file:

User Name,Display Name,Login Name,Role,Last Login DateTime,Address,Application,AAA,Exchange,Comment 
SUPPORT,SUPPORT,SUPPORT,124,2015-05-29 14:32:26,"Test Company,Bond St,London,London,1111 111,GB,[email protected],IS",,,LSE, 

uscita sulla stampa:

SUPPORT Test Company 2015-05-29 14:32:26 IS 
+1

È questo l'output che si desidera? In caso contrario, quale output * do * vuoi? –

+0

L'output è esattamente come lo voglio, lo si ottiene in una lista/dettato o scritto in un nuovo csv non riesco a lavorare. –

risposta

0

Con alcuni test ho finalmente ottenere la linea di scrivere il file CSV:

for row in reader: 
    writer.writerow([row['User Name'],row['Address'].split(',')[0],row['Last Login DateTime'],row['Address'].split(',')[7]]) 
0

Utilizzando questo codice, ho la linea è necessario:

import csv 
f1 = open ("report.csv","r") # open input file for reading 
users_dict = {} 
with open('out.csv', 'wb') as f: # output csv file 
    writer = csv.writer(f) 
    with open('report.csv','r') as csvfile: # input csv file 
     reader = csv.DictReader(csvfile, delimiter=',') 
     for row in reader: 
      print row['User Name'],row['Address'].split(',')[0],row['Last Login DateTime'],row['Address'].split(',')[7] 
      users_dict.update(row) 
      #users_list.append(row['Address'].split(',')) 
      #users_list.append(row['Last Login DateTime']) 
      #users_list.append(row[5].split(',')[7]) 

    print users_dict 

f1.close() 

Le uniche modifiche:

  • Compreso il import csv in alto.
  • Indentare il codice subito dopo il with open('out.csv' ......

Questo risolto il problema?

+0

Mi dispiace di aver perso l'importazione csv durante la copia/incolla del codice nella domanda. Il problema che sto avendo è ottenere tutte le righe di dati come da comando di stampa sotto o in una variabile o scritto in un secondo csv. Il comando di stampa è esattamente il dato che voglio. –

+0

riga di stampa ['Nome utente'], riga ['Indirizzo']. Diviso (',') [0], riga ['Ultimo accesso DataTime'], riga ['Indirizzo']. Diviso (',') [ 7] –

Problemi correlati