TypeError: строковые индексы должны быть целыми числами - Очистка моего текста - PullRequest
0 голосов
/ 17 февраля 2020

Попытка очистки твитов с помощью этой функции:

class PreProcessTweets:
    def __init__(self):
        self._stopwords = set(stopwords.words('english') + list(punctuation) + ['AT_USER','URL'])

    def processTweets(self, list_of_tweets):
        processedTweets=[]
        for tweet in list_of_tweets:
            processedTweets.append((self._processTweet(tweet["Text"])))
        return processedTweets

    def _processTweet(self, tweet):
        tweet = tweet.lower() # convert text to lower-case
        tweet = re.sub('((www\.[^\s]+)|(https?://[^\s]+))', 'URL', tweet) # remove URLs
        tweet = re.sub('@[^\s]+', 'AT_USER', tweet) # remove usernames
        tweet = re.sub(r'#([^\s]+)', r'\1', tweet) # remove the # in #hashtag
        tweet = word_tokenize(tweet) # remove repeated characters (helloooooooo into hello)
        return [word for word in tweet if word not in self._stopwords]

И когда я хочу использовать это:

preprocessedTestSet = tweetProcessor.processTweets(tweet)

Я получил этот вывод

TypeError: строковые индексы должны быть целыми числами

Что не так? Как я могу это исправить?

1 Ответ

0 голосов
/ 17 февраля 2020

Предполагая, tweet является строкой. Вы должны передать это как есть. Вы использовали tweet["Text"], что является недопустимой операцией над строкой, поскольку индекс должен быть целым числом.

def processTweets(self, list_of_tweets):
    processedTweets=[]
    for tweet in list_of_tweets:
        processedTweets.append(self._processTweet(tweet))
    return processedTweets

или более Pythoni c:

def processTweets(self, list_of_tweets):
    return [self._processTweet(tweet) for tweet in list_of_tweets]

Примечания:

Возможно, вы забыли использовать необработанные строки (r"") в некоторых своих регулярных выражениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...