繁体   English   中英

Python返回“无”可防止跟随for循环

[英]Python return “None” prevents following for loop

我正在使用Tweepy流推文。 我正在尝试使用json文件中的retweeted_status标识符过滤掉转发的内容。 我希望for循环在它之前的行上的空返回之后执行,但是它似乎不起作用-没有输出任何内容。 该脚本似乎在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循环内。

替换returncontinue ,它应该工作的伟大。 continue略过剩下的for循环,并开始对下一个值。

如果您希望在for循环之前打印出空行,请用print()替换return ,而这将会发生。

如果on_status方法中的新数据包含所需的内容,则可能应该调用另一个函数。 无需在on_status方法内进行继续操作,因为它不是for循环,除非您创建自己的for循环并根据自己的自定义业务逻辑决定继续。

在幕后,Tweepy库正在从名为on_data的自定义StreamListener调用InheritedStreamListener )方法。 您唯一要做的就是对数据进行处理或不进行处理。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM