Проблема в том, что код записывает один словарь, который DictWriter
обрабатывает как одну строку. Подход, который должен работать, состоит в том, чтобы создавать имена полей из всех ключей dict
, а затем записывать каждый dict
в виде отдельной строки.
Примерно так:
dicts = [social_urls, metadata, ...]
fieldnames = set()
# Update fieldnames with each dict's keys
# Use a set to filter duplicates.
fieldnames.update(*(d.keys() for d in dicts))
with open(myfile.csv, 'a', newline='') as f:
writer= csv.DictWriter(f, fieldnames=fieldnames)
for d in dicts:
writer.writerow(d)