У меня возникли проблемы, когда в объектах отсутствуют некоторые поля, поэтому мой CSV-файл не организован.
здесь предыдущий код, который работал, но CSV был испорчен:
import json
import csv
def get_tweets(item, key=None):
if isinstance(item, dict):
tweets = []
for i in item.keys():
tweets.extend(get_tweets(item[i], i))
return tweets
elif isinstance(item, list):
tweets = []
for i in item:
tweets.extend(get_tweets(i, key))
return tweets
else:
return [(key, str(item))]
with open('collected_tweets.json') as f_input, open('tweets_csvfile.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
write_header = True
for _ in f_input.readlines():
tweet_entries = sorted(get_tweets(json.loads(_)))
if write_header:
csv_output.writerow([k for k, v in tweet_entries])
write_header = False
csv_output.writerow([v for k, v in tweet_entries])
Вот пример файла CSV: введите описание изображения здесь здесь это код, который я пытаюсь использовать сделать CSV организованы
import json import csv
def get_tweets(item, key=None):
if isinstance(item, dict):
tweets = []
for i in item.keys():
tweets.update(get_tweets(item[i], i))
return tweets
elif isinstance(item, list):
tweets = []
for i in item:
tweets.update(get_tweets(i, key))
return tweets
else:
return [key, item]
with open('collected_tweets.json') as f_input:
json_data = json.load(f_input)
fieldnames = set()
for entry in json_data:
fieldnames.update(get_tweets((entry).keys()))
with open('tweets_csvfile.csv', 'w', newline='') as f_output:
csv_output = csv.DictWriter(f_output, fieldnames=sorted(fieldnames))
csv_output.writeheader()
csv_output.writerows(get_tweets(entry) for entry in json_data)
Любая помощь будет оценена