У меня есть файл csv, который имеет первую строку в качестве имен столбцов.изменить и сохранить файл csv в python
Я пытаюсь создать новый CSV-файл из старого.
Новый файл CSV получается путем фильтрации исходного файла CSV с помощью второго столбца, значение которого HR
Вот код
import csv
import os
Filename = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\\Desktop\RosterUnified.csv"
Filename1=os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\\Desktop\RosterCurrentMonth.csv"
f1=open(Filename,'r',newline='\n')
f2=open(Filename1,'w',newline='\n')
reader = csv.DictReader(f1)
writer = csv.writer(f2)
rows = [row for row in reader if row[1] == 'HR']
for row in rows:
writer.writerow(row)
f1.close()
f2.close()
Я получаю сообщение об ошибке:
Traceback (most recent call last):
File "C:\Users\dasa17\Desktop\testcsv.py", line 9, in <module>
rows = [row for row in reader if row[1] == 'HR']
File "C:\Users\dasa17\Desktop\testcsv.py", line 9, in <listcomp>
rows = [row for row in reader if row[1] == 'HR']
KeyError: 1
Образец из файла csv, сдвиги B, WO и т. Д. Соответствует датам
Manager NT ID Vertical Org Employee ID 12/1/2016 12/2/2016 12/3/2016 12/4/2016 12/5/2016
johnyv GS Finance banakv B B WO WO B
johnyv GS Finance anbazh B B WO WO B
johnyv GS Finance immana B B WO WO B
immana GS Finance raosha B B WO WO B
chinj GS Finance johnyv B B WO WO B
johnyv GS Finance yeddub B B WO WO B
johnyv GS Finance sharmr25 B B WO WO B
chinj GS Finance pellan B WO WO B
johnyv GS Finance ccl B B WO WO B
johnyv GS Finance raos27 B B WO WO B
johnyv GS Finance chinns3 B B WO WO B
gopals5 IT guntuv1 B B WO WO B
goganp IT vasuds2 G G WO WO G
sharmr1 IT konakr G G C C WO
mangan IT kanumr B B WO WO B
singho1 IT nanjad G G G G G
goganp IT tandok G G WO WO G
sharmr1 IT ranjas2 D WO A A B
mangan IT poddar2 A A A A A
wongs2 IT subras24 G G WO WO G
singho1 IT sevakm G G G G G
sharmr1 IT gopalh B B WO WO A
mangan IT ramakp2 B B B B B
cohna1 IT perumk B B WO WO B
ramosj6 IT maddib G G WO WO G
singho1 IT guptar29 G G G G G
darisr IT vasudl G G WO WO G
thangk IT singhs70 L L WO WO L
subras16 IT hampas A A A A A
gordos7 IT subras16 B B B B B
omahoc IT royd1 G G WO WO G
darisr IT gandhn5 G G WO WO G
eranhm IT arasap G G WO WO G
juszkw IT patilg2 B B WO WO B
mkulkarn IT kembhp G G WO WO G
chavvp IT pinnas1 G G WO WO G
subras16 IT dhanam A A A A A
vasudl IT saralm A A A WO A
mkulkarn IT sukumk1 G B WO WO B
arorag IT sreedr G G WO WO G
subras16 IT sivasm2 B B B B B
parvar IT razdak B B WO WO L
vasudl IT jayacs1 B B WO WO A
palang1 IT vedagm B B B B B
mkulkarn IT kur5 G G WO WO G
sharmr1 IT sambaa1 A D WO WO B
chavvp IT rangak3 G G WO WO G
arorag IT suryaa1 G G WO WO G
subras16 IT kumarr27 B B B B B
Royd1 IT gavria G G WO WO G
Файл был создан с помощью кода
d=open(Filename, 'w',newline='\n') #Format for CSV input
c = csv.writer(d)
c.writerow(["Manager NT ID"," Vertical Org","Employee ID" ]+ dayssl)# Write the header list of strings in the first row
for row in result_IT:
c.writerow(row)#Write output for IT to csv
d.close()
e=open(Filename, 'a',newline='\n')
f= csv.writer(e)
for row in result_Others:
f.writerow(row)# Append to the existing CSV file with non IT data
e.close()
#Close the CSV file
Есть ли пустые строки в вашем 'csv'? вам может потребоваться открыть его с помощью 'newline = ''', как рекомендуют документы.Или измените ваш comp на 'rows = [строка для строки в читателе, если строка и строка [1] == 'HR']' –
Пример строк (первые 5-10 строк) из вашего файла csv? – MYGz
@Mohammad Yusuf Ghazi добавлен – ananda