2016-02-15 2 views
1

Я пытаюсь написать некоторый результат JSON содержимое в формат CSV, содержание JSON является - https://gist.github.com/anonymous/6cf68a53898b8a7c1324JSON в CSV писать вложенное содержание Dict

Вот мой код, чтобы написать JSON в CSV

for item in result: 
    partial_data = json.loads(item['result']) 
    for rec in partial_data['results']: 
     with open("data.csv", "w") as file: 
      csv_file = csv.writer(file) 
      #csv_file.writerow(rec['general_article'],rec['author_name'],rec['infographic'],rec['video'],rec['pinterest_shares'],rec['id'],rec['num_words'],rec['linkedin_shares'],rec['title'],rec['domain_name'],rec['subdomain'],rec['thumbnail'],rec['display_title'],rec['total_shares_with_pinterest'],rec['total_shares'],rec['twitter_shares'],rec['twitter_user_id'],rec['url'],rec['article_types'],rec['google_plus_shares'],rec['published_date'],rec['og_url']) 
      csv_file.writerow(rec) 

Я пытался в Другой способ, выше код дает

*** Error: sequence expected 

Если я пишу все значения отдельно

TypeError: 'writerow() takes exactly one argument (22 given)' 

Каков правильный способ сделать это?

ответ

0

csv.writerow() метод не принимает данные в формате словаря, но в списке Формат.

Что вы можете сделать, это конвертировать ваш словарь в Список списков, а затем, возможно, вы можете использовать csv.writerows() метод для вставки всех строк на одном дыхании.

Как это:

for item in result: 
    partial_data = json.loads(item['result']) 
    outer_list = [] 
    for rec in partial_data['results']: 
     inner_list = [] 
     for key, value in rec: 
      inner_list.append(...) # values from the dictionary 
     outer_list.append(inner_list) 

with open("data.csv", "w", newline='') as file: 
    csv_file = csv.writer(file, delimiter=',') 
    csv_file.writerow(['published_date', 'linkedin_shares', ... , 'display_title']) # Column label names 
    csv_file.writerows(outer_list) 
Смежные вопросы