循环浏览CSV文件中的行

时间:2020-10-12 22:20:07

标签: python loops

我有一个csv,其中的一列与查询集匹配 我希望能够读取csv,并为每一行添加与之匹配的值。 例如我有

var group = ContactsApp.getContactGroup("System Group: My Contacts");
group.addContact(newContact);

我的csv文件包含这样的行

('1':'cat', '2':'dog', '3':'bird', '4':'rabbit')

,它们在p_id上匹配。 本质上,我希望csv与末尾的新列完全相同,例如,每一行都将显示“ cat”。

{'id': '0004B1e', 'first_name': 'Ariana', 'last_name': 'Grande', 'street_address': '211 Sing St', 'suburb': 'Boca Raton', 'state': 'QLD', 'postcode': '4120', 'phone_number': '012346583', 'p_id': '1'}

当我尝试循环执行并创建条件时,由于某种原因,它会遍历总行数。 (即,如果我有6行,它将打印36次)。 我很困惑,我不确定为什么它不起作用

{'id': '0004B1e', 'first_name': 'Ariana', 'last_name': 'Grande', 'street_address': '211 Sing St', 'suburb': 'Boca Raton', 'state': 'QLD', 'postcode': '4120', 'phone_number': '012346583', 'p_id': '1', 'column_name':'cat'}

1 个答案:

答案 0 :(得分:0)

pets结果集转换为字典,然后可以对其进行正确索引。

pets = {'1':'cat', '2':'dog', '3':'bird', '4':'rabbit'}

for row in reader:
    if row['p_id'] in pets:
        row['column_name'] = pets[row['p_id']]
    # do something with row

使用csv.DictReader,以便行将是字典而不是列表,因此您可以使用命名键。