2015-06-19 16 views
5

Mam plik CSV, który ma pewne kolumny, które muszę wyodrębnić. Jedna z tych kolumn to ciąg tekstowy, z którego muszę wyodrębnić pierwszy i ostatni element. Mam polecenie print w pętli for, która dostaję dokładnie to, czego potrzebuję, ale nie mogę wymyślić, jak albo przenieść te dane do listy, albo dyktować. Nie wiem, który jest najlepszy w użyciu.Python CSV odczytać plik i wybierz kolumny i napisz do nowego pliku CSV

kod do tej pory:

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() 

wejściowe z pliku:

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, 

Wyjście na wydruku:

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

Jest to wyjście chcesz? Jeśli nie, jaki wynik * chcesz * chcesz? –

+0

Dane wyjściowe są dokładnie takie, jak tego chcę, ich umieszczenie na liście/dict lub napisanie do nowego CSV. Nie mogę pracować. –

Odpowiedz

0

Z niektórych badań I wreszcie linię do zapisu pliku csv:

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

Za pomocą tego kodu, mam linię co potrzeba:

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() 

Jedyne zmiany:

  • w tym import csv na szczycie.
  • Wcięcia kodu tuż po with open('out.csv' ......

Czy to w rozwiązaniu problemu?

+0

Przepraszam, że przegapiłem csv importu podczas kopiowania/wklejania kodu do pytania. Problem polega na tym, że wszystkie wiersze danych, zgodnie z poleceniem print poniżej, są zapisywane w zmiennej lub zapisywane w drugim pliku CSV. Polecenie drukowania to dokładnie te dane, które chcę. –

+0

wydrukuj wiersz ["Nazwa użytkownika"], wiersz ["Adres"]. Split (",") [0], wiersz ["Ostatnie logowanie DataTime"], wiersz ["Adres"]. Split (",") [ 7] –