Как написать текстовый файл из словаря, где каждый ключ является новой строкой? - PullRequest
0 голосов
/ 17 ноября 2018

Вот мой код:

#creating a list of tweets ID and a dictionary with the values
tweet_ids = list(df1.tweet_id)
tweet_data = {}

for tweet in tweet_ids[:5]:
    try:
        tweet_status = api.get_status(tweet, tweet_mode='extended')
        id_str = tweet_status.id_str
        retweet_count = tweet_status.retweet_count
        favorite_count = tweet_status.favorite_count
        tweet_data[id_str] = retweet_count, favorite_count
    except:
        print("Error for: " + str(tweet))

Результат

Ввод tweet_status

Выход:

{'892420643555336193': (8374, 38224),
'892177421306343426': (6181, 32766),
'891815181378084864': (4090, 24675),
'891689557279858688': (8512, 41548),
'891327558926688256': (9219, 39740)}

Пока все хорошо .... но когда я создаю текстовый файл, он создает файл, подобный этому:

{'892420643555336193': (8374, 38223), '892177421306343426': (6181, 32765), '891815181378084864': (4090, 24675), '891689557279858688': (8513, 41546), '891327558926688256': (9220, 39737)}

Код, использованный для создания файла:

f = open('tweet_json.txt', 'w')
f.write(str(tweet_data))
f.close()

1 Ответ

0 голосов
/ 17 ноября 2018

Вы можете использовать json.dumps для форматирования строки JSON перед записью в файл:

import json

f = open('tweet_json.txt', 'w')
f.write(json.dumps(tweet_data, indent=2))
f.close()

Выходные данные файла будут следующими:

{
  "892420643555336193": [
    8374,
    38224
  ],
  "892177421306343426": [
    6181,
    32766
  ],
  "891815181378084864": [
    4090,
    24675
  ],
  "891689557279858688": [
    8512,
    41548
  ],
  "891327558926688256": [
    9219,
    39740
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...