Python3 из списка (в каждой строке) для CSV - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть список с типом словаря в каждой строке, так что в основном я могу пройти по списку в цикле, чтобы получить каждую запись в словаре.Мне нужно создать CSV-файл из этого списка, и каждая запись - это каждый словарь элементов в списке.

Мой список выглядит так:

[{"field1": "field","field2": "field" ....}, {"field1": "field", "field2": "field" ....}]

Я сделал этот код ниже, но яЯ храню только заголовки:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    for lines in data:
        myfile.write('\n'.join(lines))
        myfile.write('\n')

Я изучал Как мне записать словарь Python в файл CSV? , но я не знаю, как составить это для каждой строки моегосписок в цикле, чтобы гарантировать, что каждая запись идет из списка строк.

Я ценю любую помощь

спасибо.

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Вы можете использовать панды, чтобы решить эту проблему довольно просто:

import pandas as pd
df = pd.DataFrame(dict_list)
df.to_csv('output.csv', index=False)

Вот пример:

dict_list = [{'field1': 100, 'field2': '10:00', 'field3': 'cherries'}, 
{'field1': 500, 'field2': '6:00', 'field3': "cheese"}, 
{'field1':250, 'field2': '9:00', 'field3': 'beans'}]

Вывод

   field1 field2    field3
      100  10:00  cherries
      500   6:00    cheese
      250   9:00     beans
0 голосов
/ 25 сентября 2018
with open('myfile', 'wb') as f:
    # assign your headers
    w = csv.DictWriter(f, fieldnames=data[0].keys())
    # write headers
    w.writeheader()
    # write data
    w.writerows(data)

Вы можете использовать DictWriter.writerows для итерации по list данных.

Вы можете увидеть в документах , как работает DictWriter.

А вот спецификация для writerows:

csvwriter.writerows (rows)файловый объект писателя, отформатированный в соответствии с текущим диалектом.

0 голосов
/ 25 сентября 2018

Это почти дубликат другого вопроса, но система комментариев не подходит для такого большого фрагмента кода.Просто используйте цикл for, повторяющийся в вашем списке диктов, где ответ на другой вопрос сохраняется только в одной строке:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    writer = csv.DictWriter(myfile, data[0].keys())
    writer.writeheader()
    for line in data:
        writer.writerow(line)

Вы также можете использовать метод writerows и передать весь список:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    writer = csv.DictWriter(myfile, data[0].keys())
    writer.writeheader()
    writer.writerows(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...