我正在尝试使用Twitter API,但有些推文会像空白标签一样返回空白。我该如何打印?或者至少是一条消息,它是空的。
这是我到目前为止所做的:
def get_tweets(q, count=100, result_type="recent"):
result = search_tweets(q, count, result_type)
following = set(t.friends.ids(screen_name=TWITTER_HANDLE)["ids"])
for tweet in result['statuses']:
try:
print tweet
print tweet['text']
print str(tweet['user']['id'])
print tweet['hashtags']
#print 'user mentions ' + tweet['users_mentions'] + tweet['hashtags']
time.sleep(30) # Sleep for 1 hour
except TwitterHTTPError as e:
print "error: ", e
if "blocked" not in str(e).lower():
quit()
但我在
上收到错误print tweet['hashtags']
这是错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 9, in get_tweets
KeyError: 'hashtags'
答案 0 :(得分:3)
<强> dict.get()强>
您想使用get()函数。
来自python docs:
get(key[, default]):
Return the value for key if key is in the dictionary, else default.
If default is not given, it defaults to None, so that this method
never raises a KeyError.
示例
In [2]: foo = {'a': 1}
In [3]: foo['b']
...
KeyError: 'b'
In [4]: foo.get('b', "B not found")
Out[4]: 'B not found'
检查密钥中的成员资格
作为替代方案,您可以检查密钥是否存在,并有条件地报告错误。
if 'hashtags' in tweet.keys():
#do stuff if the hashtag exists
else:
#do error condition
您可以选择最适合您情况的那种。
您的代码
以下是您的代码与这些更改的相似之处。
def get_tweets(q, count=100, result_type="recent"):
...
for tweet in result['statuses']:
...
print tweet.get('hashtags', "")
if 'user_mentions' in tweet.keys():
print 'user mentions ' +
tweet.get['users_mentions'] +
tweet.get('hashtags', '')
答案 1 :(得分:3)
如前所述,您可以使用dict.get()
来进行搜索。否则,您可以使用以下if-else
块:
if 'hashtags' in tweet:
print tweet['hashtags']
else:
print "No hashtags"
答案 2 :(得分:2)
使用get
方法,第一个参数是键,第二个是如果键不存在则返回的值:
print tweet.get('hashtags', None)