你好,我是python初学者,我正在遍历csv文件,试图找出特定用户使用符号的次数:"@"one_answers"#";然后作为字典打印出来。问题是,我认为它计算的是"@yomomma"作为一个非因素,因为符号不是从单词中分离出来的,但我也不确定。
def getUserTweetDetails(tweetFile,twitterUsername):
import csv
myFile = open(tweetFile,"r") # opening file in read
csvReader = csv.reader(myFile,delimiter=",") # splitting for ','
next(csvReader) # skipping header
userDetails = {}
mentionsCounter = 0
hashtagCounter = 0
for row in csvReader:
if (row[0] == twitterUsername):
if (row[2] == '@'):
mentionsCounter += 1
if (row[2] == '#'):
mentionsCounter += 1
userDetails["mentions"] = mentionsCounter
userDetails["hashtags"] = hashtagCounter
print(userDetails)
这返回
getUserTweetDetails("Tweets-2020 (2).csv",'ChrisMurphyCT')
**{'mentions': 0, 'hashtags': 0}**
csv文件格式如下:twitterUsername,politicalParty,tweetText
您的语句row[2] == '@'
检查tweet是否等于@
。你要做的是看看推文是否包含'@' in row[2]
符号。
也有一个bug,你添加到mentionsCounter
两次而不是hashtagCounter
的第二次。
最后一个一般注意事项,我会在文件的顶部导入csv,而不是在函数中导入,所以只有在脚本第一次运行时才调用导入,而不是每次调用函数。
下面是前两个修改:
if '@' in row[2]:
mentionsCounter += 1
if '#' in row[2]:
hashtagCounter += 1 # changed from mentionsCounter to hashtagCounter
请记住,如果@
或#
在tweet中出现多次,根据您的代码,它们只会被计数器一次。
让我来简化一下;
import csv
converted_csv = csv.DictReader(open('tweets.csv'))
for row in converted_csv:
hastags = row['tweetText'].count('#')
mentions = row['tweetText'].count('@')
print(hastags, mentions)