我正在读取一个csv文件,在csv文件中取一行并将其放入一个列表中
with open('DADSA 2019-20 CWK A DATA PETS.csv', 'r') as petData:
petData = csv.DictReader(petData)
data = {}
for row in petData:
for header, value in row.items():
try:
data[header].append(value)
except KeyError:
data[header] = [value]
animalType = data['Type']
breed = data['Breed']
vacine = data['Vaccinated']
neuter= data['Neutered']
admissionReason = data['Reason for admission']
arrivalDate = data['Date of Arrival']
destination = data ['Destination '],['Sanctuary Identification']
destinationAdd = data ['Destination Address']
当我打印“animalType”时,会出现:
['Cat', 'Cat', 'Dog', 'Parrot', 'Cat', 'Cat', 'Dog', 'Dog', 'Canary', 'Dog', 'Dog', 'Cat', 'Cat', 'Cat', 'Parrot', 'Parrot', 'Dog', 'Cat', 'Cat', 'Cat', 'Dog', 'Dog', 'Dog', 'Canary', 'Cat', 'Dog', 'Dog', 'Cat', 'Cat', 'Cat']
太完美了。然而,当我开始实现一个循环时,它会变得一团糟
if option =="4":
for item in animalType:
if item == "Dog":
print(row)
从而产生以下输出:
['P11456', 'Cat', 'Persian', 'Yes', 'Yes', 'D234567', 'Lost', '11/09/2019', '11/10/2019', 'return to owner', '333 New Lane, SE14 6RT'] ['P12467', 'Cat', 'Ancora', 'Yes', '', 'D123456', 'Lost', '14/09/2019', '30/09/2019', 'return to owner', '290 Oak Avenue, BS79 8TR'] ['P31222', 'Dog', 'Alsatian', 'Yes', '', 'D220956', 'Lost', '24/09/2019', '10/10/2019', 'return to owner', '25 Newtown Road, NT56 6YU'] ['P24119', 'Cat', 'Himalayan', 'Yes', '', 'D189875', 'Lost', '26/09/2019', '17/10/2019', 'return to owner', '43 Glynt Lane, CF76 5TR'] ['P25311', 'Dog', 'Dachshund', 'Yes', '', 'D221133', 'Lost', '28/09/2019', '12/10/2019', 'return to owner', '23 Lonely Court, BS1 1TY'] ['P25412', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D101033', 'Lost', '28/09/2019', '12/10/2019', 'return to owner', '29 Lonely Court, BS1 1TY'] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', ''] ['P25634', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D222111', 'Stray', '29/09/2019', '', '', '']
它也在打印一排猫
我希望代码检查CSV文件的第二行(我称之为animalType),如果在该列中他们是“Dog”,我希望它打印该行
是我的方法不对,还是我的想法正确,执行力不好
编辑:
我现在已经改变了代码,我得到了一个不同的问题
if option =="4":
with open('DADSA 2019-20 CWK A DATA PETS.csv', 'r') as petData:
petData = csv.DictReader(petData)
data = {}
for row in petData:
if row['Type'] == "Dog" and row['Vaccinated'] == "Yes" and row['Microchip Number'] != 0 and row ['Neutered'] == "Yes":
Dogs.append(row)
print(Dogs)
输出如下:
[] ['P11456', 'Cat', 'Persian', 'Yes', 'Yes', 'D234567', 'Lost', '11/09/2019', '11/10/2019', 'return to owner', '333 New Lane, SE14 6RT'] ['P12467', 'Cat', 'Ancora', 'Yes', '', 'D123456', 'Lost', '14/09/2019', '30/09/2019', 'return to owner', '290 Oak Avenue, BS79 8TR'] ['P31222', 'Dog', 'Alsatian', 'Yes', '', 'D220956', 'Lost', '24/09/2019', '10/10/2019', 'return to owner', '25 Newtown Road, NT56 6YU'] ['P24119', 'Cat', 'Himalayan', 'Yes', '', 'D189875', 'Lost', '26/09/2019', '17/10/2019', 'return to owner', '43 Glynt Lane, CF76 5TR'] ['P25311', 'Dog', 'Dachshund', 'Yes', '', 'D221133', 'Lost', '28/09/2019', '12/10/2019', 'return to owner', '23 Lonely Court, BS1 1TY'] ['P25412', 'Cat', 'Ragdoll', 'Yes', 'Yes', 'D101033', 'Lost', '28/09/2019', '12/10/2019', 'return to owner', '29 Lonely Court, BS1 1TY'] [OrderedDict([('Sanctuary Identification', 'P24117'), ('Type', 'Dog'), ('Breed', 'Bulldog'), ('Vaccinated', 'Yes'), ('Neutered', 'Yes'), ('Microchip Number', 'D121323'), ('Reason for admission', 'Abandoned'), ('Date of Arrival', '26/09/2019'), ('Date of Departure', ''), ('Destination ', ''), ('Destination Address', '')])] [OrderedDict([('Sanctuary Identification', 'P24117'), ('Type', 'Dog'), ('Breed', 'Bulldog'), ('Vaccinated', 'Yes'), ('Neutered', 'Yes'), ('Microchip Number', 'D121323'), ('Reason for admission', 'Abandoned'), ('Date of Arrival', '26/09/2019'), ('Date of Departure', ''), ('Destination ', ''), ('Destination Address', '')]), OrderedDict([('Sanctuary Identification', 'P24142'), ('Type', 'Dog'), ('Breed', 'Bulldog'), ('Vaccinated', 'Yes'), ('Neutered', 'Yes'), ('Microchip Number', 'D223311'), ('Reason for admission', 'Abused'), ('Date of Arrival', '28/09/2019'), ('Date of Departure', ''), ('Destination ', ''), ('Destination Address', '')])]
如您所见,输出的开头是错误的,它无缘无故地显示cats。但是,输出的结尾部分显示了3个正确的行
你为什么不这样做:
而不是将每个属性拆分为单独的列表
相关问题 更多 >
编程相关推荐