Форматирование значений с использованием индексации заголовка 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"},
...