2016-03-07 3 views
1

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

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"}, 
... 

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

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

ответ

2

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

Создайте объект, который работает как обычный читатель, но отображает информацию читать в Словарь, ключи которого определяется дополнительным параметром имен полей. Параметр 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"}, 
... 
+0

Это было прекрасно, вещь, которую я искал. Разумеется, я тоже наткнулся на это миллион раз, но он никогда не щелкал. Любая идея, почему она показывает последнюю строку в качестве первого атрибута в словаре, например: {'result': 'yes', 'outlook': 'sunny', 'влажность': 'normal', 'temperature': ' мягкий ',' windy ':' TRUE '}? –

+1

Это потому, что 'dict' не сортируются, вы не можете гарантировать заказ ключей. Однако это не повлияет на ваше использование. Вы можете преобразовать свой результат в ['OrderedDict'] (https://docs.python.org/3/library/collections.html#collections.OrderedDict) и отсортировать его впоследствии. – Selcuk

+0

Большое спасибо, спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^