То, что происходит, заключается в том, что ваш цикл for выполняет итерацию по ключам словаря json, поэтому вы звоните writer.writerow('drivers')
. Поскольку строки в Python являются итеративными, writer.writerow
интерпретирует каждый символ в драйверах столбец в строке.
Лучший способ справиться с этим - вместо использования объекта csv.writer
использовать объект csv.DictWriter
( Docs ). Ваш код будет выглядеть примерно так:
with open('driver.csv','w') as csv_f:
drivers = json.loads(infile.read())['drivers']
fields = list(drivers[0].keys())
dict_writer = csv.DictWriter(csv_f, fieldnames=fields)
dict_writer.writeheader()
for driver in drivers:
dict_writer.writerow(driver)
Я не знаю о лицензировании, но это реализовано в Python и включает источник.
Существует пример кода для того же по http://jjinux.blogspot.com/2009/01/python-parsing-wikipedia-dumps-using.html
Еще один хороший модуль - mwlib из здесь - его сложно установить со всеми зависимостями (по крайней мере, в Windows), но он хорошо работает .