2017-02-09 3 views
0

Я использую osmnx для проекта и попытался экспортировать полученную dicts в CSV, используя Python 3, используя следующий код:Преобразование Dict хранится в виде строки в байтах

with open('dict.csv', 'wb') as csv_file: 
    writer = csv.writer(csv_file) 
    for key, value in mydict.items(): 
     writer.writerow([key, value]) 

К сожалению, я получаю ошибка:

a bytes-like object is required, not 'str' 

код, который генерации Dict является:

mydict = {num:list(streets_per_node.values()).count(num) for num in range(max(streets_per_node.values()) + 1)} 

Я попытался чтобы выследить решение, но я боюсь, что либо ответ слишком простой, либо слишком необычный, чтобы найти в типичных учебниках.

+0

Что такое 'streets_per_node.values ​​()'? – MooingRawr

+0

@MooingRawr Это результат серии вычислений osmnx. Короче говоря, это счет, сгенерированный с помощью multicigraph сети. Код длинный, но уместный код, который генерирует окончательный Dict является: 'ребро = non_self_loop_edges + self_loop_edges' ' edges_flat = список (chain.from_iterable (ребра)) '' отсчетов = Счетчик (edges_flat) '' street_per_node = {node: counts [node] для узла в узлах} ' Края - это термин теории графов, который в этом случае относится к улицам, а узлы - это пересечения. Полный код начинается в строке 330 здесь: https://github.com/gboeing/osmnx/blob/master/osmnx/stats.py –

ответ

2

open('dict.csv', 'wb') сообщает Python, что вы хотите открыть файл для записи байт, а не текст, поэтому вы получаете эту ошибку. Просто опустите b, и он должен работать.

См: https://docs.python.org/3/library/csv.html#examples

+0

Рекомендуется также обеспечить кодировку, чтобы гарантировать, что кодировка файлов согласована на разных платформах (Pre Py3.6) –

+0

@tzaman Вот и все. Это был слишком простой сценарий; Благодарю. –

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