Как определить стабильную форму для вывода твитов при получении твитов в реальном времени с помощью Python

Мой код работает для получения твитов в реальном времени с помощью пакета Python Tweepy. Я только хочу получить дату создания и содержание твита, поэтому я определяю как ниже

 def on_status(self, status):
    tweet_text = status.text
    tweet_created_date = str(status.created_at)
    tweet_data = {'Created_at':tweet_created_date,'Text':tweet_text}
    self.num_tweets += 1
    if self.num_tweets < 10001:
        with open('data.txt','a') as tf:
            #tf.write(tweet_data + '\n')
            tf.write(format(tweet_data) + '\n')
        return True
    else:
        return False

Но выходные данные не показывают точно "Created_at:....., Text.....". Он изменяется при изменении даты создания.

{'Text': 'RT @owen_author: Tiger Lily of Bangkok: a serial killer is on the loose in #BKK NaNoWriMo winner #Bangkoknoir #thri…', 'Created_at': '2017-06-01 22:18:28'}
{'Text': 'RT @MidwestBG: #NP Silent Stranger @SilentStranger6 - Bangkok by Night (Alternate Mix) on @MidwestBG', 'Created_at': '2017-06-01 22:18:38'}
{'Text': 'RT @IronWavesRadio: #NP Silent Stranger @SilentStranger6 - Bangkok by Night (Alternate Mix) on @IronWavesRadio', 'Created_at': '2017-06-01 22:18:42'}
{'Created_at': '2017-06-02 02:34:31', 'Text': '"RT @EXOXIUMINMAMA: 17.06.10\n2017 BANGKOK SUPER LIVE  \n#2017bkksuperlive \n\n#XIU의미소가우리에겐최고! \nXIUMIN's Smile is the BEST! \n\nรายละเอียด\n… "'}
{'Created_at': '2017-06-02 02:34:39', 'Text': '(w1-59)Stamps,Thailand stamps,MNH,wild animals,art,minerals #thailand #bangkok'}
{'Created_at': '2017-06-02 02:34:42', 'Text': 'RT @joeybirlem: reacting to cringey musicallys youtube video out tomorrow! bangkok vlog out on friday be readyyyyyyy'}

Так как я могу это исправить для всех твитов всего дня, показано в 1 форме "Created_at:....., Text.....".
Я очень новичок, поэтому мне нужна ваша помощь.

Большое спасибо.

1 ответ

Вы используете dict (словарь) тип для хранения твитов (tweet_data). Словари Python не поддерживают порядок сохраненных полей. Таким образом, вы видите несколько случаев с {'Text': ..., 'Created_at': ...} в то время как другие с {'Created_at': ..., 'Text': ...},

Если вы хотите сохранить порядок полей, вы можете использовать OrderedDict тип:

tweet_data = OrderedDict([('Created_at', tweet_created_date), ('Text', tweet_text)])
Другие вопросы по тегам