Python return "None" 防止跟随 for 循环
Python return "None" prevents following for loop
我正在使用 Tweepy 来流式传输推文。我正在尝试使用 json 文件中的 retweeted_status 标识符过滤掉转发的内容。
我希望 for 循环在它之前的行上的空 return 之后执行,但它似乎不起作用 - 什么都没有打印出来。脚本似乎在 if 语句之后停止:
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
#these variable split out the data from the outputted json
text = status.text
name = status.user.screen_name
id_str = status.id_str
#This if argument ensures that if there is retweeted status then None is returned
if hasattr (status, 'retweeted_status'):
return
for url in status.entities['urls']:
print (text, name, (url['expanded_url']), file=open("results.txt", "a"))
而不是使用 return (这将完全退出您的函数),您只想继续 for 循环的下一次迭代而不打印。尽管为了使它有意义,您的 if 语句应该在 for 循环内。
将 return
替换为 continue
,它应该会很好用。 continue
跳过 for 循环的其余部分并从下一个值开始。
如果您希望在 for 循环之前打印出一个空行,则将 return
替换为 print()
即可。
如果来自 on_status
方法的新数据包含您想要的内容,您可能应该调用另一个函数。无需在 on_status
方法内部执行 continue,因为它不是 for 循环,除非您创建自己的 for 循环并决定根据您自己的自定义业务逻辑继续。
在幕后,Tweepy 库正在从名为 on_data 的自定义 StreamListener
中调用继承的(StreamListener
)方法。您唯一负责的是是否使用该数据。
def handle_status_update(status):
# Handle your custom stuff in here...
text = status.text
name = status.user.screen_name
id_str = status.id_str
for url in status.entities['urls']:
print (text, name, (url['expanded_url']), file=open("results.txt", "a"))
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
# if not retweeted
if not hasattr (status, 'retweeted_status'):
handle_status_update(status)
我正在使用 Tweepy 来流式传输推文。我正在尝试使用 json 文件中的 retweeted_status 标识符过滤掉转发的内容。 我希望 for 循环在它之前的行上的空 return 之后执行,但它似乎不起作用 - 什么都没有打印出来。脚本似乎在 if 语句之后停止:
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
#these variable split out the data from the outputted json
text = status.text
name = status.user.screen_name
id_str = status.id_str
#This if argument ensures that if there is retweeted status then None is returned
if hasattr (status, 'retweeted_status'):
return
for url in status.entities['urls']:
print (text, name, (url['expanded_url']), file=open("results.txt", "a"))
而不是使用 return (这将完全退出您的函数),您只想继续 for 循环的下一次迭代而不打印。尽管为了使它有意义,您的 if 语句应该在 for 循环内。
将 return
替换为 continue
,它应该会很好用。 continue
跳过 for 循环的其余部分并从下一个值开始。
如果您希望在 for 循环之前打印出一个空行,则将 return
替换为 print()
即可。
如果来自 on_status
方法的新数据包含您想要的内容,您可能应该调用另一个函数。无需在 on_status
方法内部执行 continue,因为它不是 for 循环,除非您创建自己的 for 循环并决定根据您自己的自定义业务逻辑继续。
在幕后,Tweepy 库正在从名为 on_data 的自定义 StreamListener
中调用继承的(StreamListener
)方法。您唯一负责的是是否使用该数据。
def handle_status_update(status):
# Handle your custom stuff in here...
text = status.text
name = status.user.screen_name
id_str = status.id_str
for url in status.entities['urls']:
print (text, name, (url['expanded_url']), file=open("results.txt", "a"))
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
# if not retweeted
if not hasattr (status, 'retweeted_status'):
handle_status_update(status)