我是python新手,我正在做一个获取tweet的项目。我能够做到这一点,现在我想从所有这些tweet中获取hashtag。但是当我尝试执行for循环以附加我的列表时,它只捕获了最后一项/值。我已经遍访了google,甚至尝试了chatGPT,但我似乎不能得到正确的结果。
这里是我的代码,如果有人是善良的,请看看我错过了什么。
keyword = str(input("Enter hashtag"))
date = str(input("Enter date: YYYY-MM-DD"))
tweets = tweepy.Cursor(api.search_tweets, q=keyword, since_id=date, lang='en', tweet_mode = "extended",).items(30) # this is correct
#created columns for Dataframe
columns = ['Date & Time', 'User', 'Retweet_no' ,'Text', 'Location']
data_la= []
#Created for loop to append data_la
for tweet in tweets:
data_la.append([tweet.created_at, tweet.user.screen_name, tweet.retweet_count, tweet.full_text, tweet.geo])
print(tweet.full_text)
## trying to get hashtags of tweets fetched.
#Get the tweet text
tweet_text = tweet.full_text
#Use a regex to find all hashtags in the tweet text
hashtags = re.findall(r"#(\w+)", tweet_text)
print('items:', hashtags)
# Use the entities attribute to get the hashtags
hashtag_list = []
for word in tweets:
if word == '#':
hashtag_list.append(word)
print('List:', hashtag_list)
我在谷歌上到处寻找答案,但没有用。我已经被这个问题困扰了一个多星期了。
2条答案
按热度按时间5cnsuln71#
正如RedzMakersError所说,您只检查单词是否为
#
,并且只检查#
。您应该尝试以下操作:
正如函数名所示,如果字符串以
#
开头,则返回True
,否则返回False
。正式文件:https://docs.python.org/3/library/stdtypes.html#str.startswith
rks48beu2#
我觉得你的问题在于这句台词:
你检查这个词是否只有一个“#”
你可能只是想检查单词是否以一个hashtag字符开头(就像hashtag一样),你可以用
startswith()
函数来检查字符串是否以给定字符开头,如果是,就返回true
。因此,在您的情况下,您的代码可能应该如下所示:
在这里,您可以了解更多关于
startswith()
的信息:https://www.w3schools.com/python/ref_string_startswith.asp希望这有帮助:)