AttributeError: у объекта 'unicode' нет атрибута 'has_key'
Недавно я работал над кодом для анализа данных в Твиттере (не программистом), и теперь я столкнулся с другой ошибкой, которую не могу понять.
Моя цель - вызвать эту функцию из командной строки следующим образом: `cat file.json | python main.py > output.csv' . Я пока мало что сделал с функциями, но, надеюсь, у меня просто простая ошибка.
ошибка
Traceback (most recent call last):
File "/home/titan/Titan_share/Titan/twitterAPI/printTweets_v7.py", line 34, in <module>
main()
File "/home/titan/Titan_share/Titan/twitterAPI/printTweets_v7.py", line 21, in main
if tweet.has_key('retweeted_status'):
AttributeError: 'unicode' object has no attribute 'has_key'
Код
import json
import sys
import time
def main():
for line in sys.stdin:
line = line.strip()
data = ''
try:
data = json.loads(line)
except ValueError as detail:
continue
for tweet in data:
tweet_time = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(data['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))
## if the key 'retweeted_status' is in the dict, print
if tweet.has_key('retweeted_status'):
print tweet_time , "\t" , tweet['id_str'], "\t" , tweet['user']['screen_name'] , "\t" , tweet['retweeted_status']['user']['screen_name'] , "\t" , "RETWEET" , "\t" , tweet['text']
## if there is a mention in the dict, print
elif 'entities' in tweet and len(tweet['entities']['user_mentions']) > 0:
for u2 in tweet['entities']['user_mentions']:
print tweet_time , "\t" , tweet['id_str'], "\t" , tweet['user']['screen_name'] , "\t" , u2['screen_name'] , "\t" , "MENTION" , "\t" , tweet['text']
## if there is no retweet and no mention, print
else:
print tweet_time , "\t" , tweet['id_str'], "\t" , tweet['user']['screen_name'] , "\t" , "\t" , "TWEET" , "\t" , tweet['text']
if __name__ == '__main__':
main()