как токенизировать список твитов без его ошибок? - PullRequest
0 голосов
/ 07 мая 2019

В настоящее время я работаю над программой для получения списка твитов по заданной теме.До тех пор мне удается получить их и сохранить в файле JSON, который идеально подходит.

Проблема возникает, когда я пытаюсь "токенизировать" этот список твитов.

У меняследующая ошибка:

Traceback (most recent call last):
  File "C:\Users\TheoLC\Desktop\python\twitter_search\collect+200tw.py", line 77, in <module>
    tweet_token = tweet['text'].tokenize()
TypeError: string indices must be integers

И это код:

with open("%s_tweets.json" % search_word, 'a') as f:
    for tweet in new_tweets:
        json.dump(tweet._json, f, indent=4)


with open("%s_tweets.json" % search_word, 'r+') as f:
    for tweet in f:
        tweet_token = tweet['text'].tokenize()
        print('Tweet tokenize : ' + tweet_token)

У меня также есть вторая проблема:

В моей программе я перевожу поисковое словона несколько языков, чтобы получить как можно больше твитов из моего файла JSON.

Проблема заключается в том, что вместо получения JSON с несколькими твитами из нескольких языков я хотел бы, чтобы все твиты были переведены на английский язык.

Поэтому я пытаюсь применить обратный процесс следующим образом:

for tweet in new_tweets_fi:
    tweet['text'] = translator.translate(tweet['text'], src='fi', dest='en')
    print("Les tweets en finlandais ont été traduis")

for tweet in new_tweets_fr:
    tweet['text'] = translator.translate(tweet['text'], src='fr', dest='en')
    print("Les tweets en francais ont été traduis")

И вот ошибка, которая возвращается:


Traceback (most recent call last):
  File "C:\Users\TheoLC\Desktop\python\twitter_search\collect+200tw.py", line 52, in <module>
    tweet['text'] = translator.translate(tweet['text'], src='fi', dest='en')
TypeError: 'Status' object is not subscriptable

Огромное спасибо тем, ктобыть в состоянии помочь мне

1 Ответ

0 голосов
/ 07 мая 2019

Обе ошибки связаны и связаны с тем, что вы пытаетесь получить доступ к tweet['text'].

Когда вы перебираете объект файла, каждый элемент является строкой.(Более конкретно, строка текста из файла.) Таким образом, в первом примере кода tweet является строкой, и нет такой вещи, как tweet['text']

with open("%s_tweets.json" % search_word, 'r+') as f:
    for tweet in f:
        # do stuff with tweet (a string)

Во втором примереЯ не уверен, что это за структура данных new_tweets_fi и new_tweets_fr, но похоже, что когда вы перебираете их, вы получаете объект Status.Я также не уверен, как выглядит этот объект, но каким бы он ни был, вы не можете индексировать его, как строку или словарь.(См. В Python, что означает, является ли объект подписываемым или нет? )

...