Форматирование значений с использованием индексации заголовка csv

У меня есть.csv, который мне нужен, чтобы выглядеть как специально отформатированный словарь, и я не могу обернуть голову вокруг цикла, необходимого для того, чтобы сделать это так, как мне нужно. Например, эти три строки (строка [0] - заголовок с моими метками), которые в настоящее время выглядят так:

0 outlook,temperature,humidity,windy,result
1 overcast,hot,high,FALSE,yes
2 overcast,cool,normal,TRUE,yes
...

Должно выглядеть так:

 {"outlook":"overcast", "temperature":"hot", "humidity":"high","windy":"FALSE","result":"yes"},
 {"outlook":"overcast", "temperature":"cool", "humidity":"normal","windy":"TRUE","result":"yes"},
 ...

После того, как они были обработаны и очищены. Я имею это близко, но не совсем правильно, используя словари. Я возился с пандами и импортом CSV, и я начинаю забывать, что лучший способ сделать это в Py3.

Спасибо за любую помощь. Это высоко ценится.

1 ответ

Решение

Ты можешь использовать DictReader:

Создайте объект, который работает как обычный читатель, но отображает информацию, считываемую в dict, ключи которого задаются необязательным параметром fieldnames. Параметр fieldnames - это последовательность, элементы которой связаны с полями входных данных по порядку. Эти элементы становятся ключами результирующего словаря. Если параметр fieldnames опущен, значения в первой строке csvfile будут использоваться как имена полей.

Таким образом, пример кода будет:

import csv
with open('temperature.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row)
        ...

это будет печатать

{"outlook":"overcast", "temperature":"hot", "humidity":"high","windy":"FALSE","result":"yes"},
...
Другие вопросы по тегам