Heroku对这个Python机器人的缩进错误。我看不见?

时间:2016-12-28 04:53:29

标签: python heroku twitter

最近我在Heroku上部署了一个python bot,每当我尝试运行它时,都会弹出这个错误。

  

2016-12-28 T04:32:08.770156 + 00:00 app [worker.1]:文件" bot.py",第43行

     

2016-12-28 T04:32:08.770168 + 00:00 app [worker.1]:else:

     

2016-12-28 T04:32:08.770171 + 00:00 app [worker.1]:^

     

2016-12-28 T04:32:08.770172 + 00:00 app [worker.1]:IndentationError:预期缩进块

这是它所引用的代码块。我确实理解他们抛出的错误但却看不出原因? (代码来自Git存储库。)

class listener(StreamListener):
    def on_data(self, raw_data):
        try:
            retweet_ed = raw_data.lower().split('"retweeted":')[1].split(',"possibly_sensitive"')[0].replace(",", "")
            tweet_text = raw_data.lower().split('"text":"')[1].split('","source":"')[0].replace(",", "") #tweet's text
            screen_name = raw_data.lower().split('"screen_name":"')[1].split('","location"')[0].replace(",", "") #tweet's authors screen name
            tweet_sid = raw_data.split('"id":')[1].split('"id_str":')[0].replace(",", "") #tweet's id


            if not any(a_acc == screen_name.lower() for a_acc in whitelist_acc):
                if not any(acc == screen_name.lower() for acc in banned_accs):
                    if not any(a_wrds in screen_name.lower() for a_wrds in whitelist_words):
                        if not any(word in tweet_text.lower() for word in banned_words):
                            if("false" in retweet_ed):
                                #call what u want to do here
                                #for example :
                                #fav(tweet_sid)
                                #retweet(tweet_sid)
                            else:
                                pass
                                #call what u want to do here
                                #for example :
                                #fav(tweet_sid)
                                #retweet(tweet_sid)
            return True
        except Exception as e:
            print(str(e)) # prints the error msg, if u dont want it comment it out
            pass

有人可以帮忙吗?给我一个眼睛?或者烤我XD

3 个答案:

答案 0 :(得分:2)

首先, <html> <head> <script src="highchart.js"></script> <script src="exporting.js"></script> </head> <body> <div id="container" style="min-width: 210px; max-width: 300px; height: 50px; margin: 0 auto"></div> <script> Highcharts.chart('container', { chart: { type: 'bar' }, xAxis: { tickColor: '#FFFFFF', tickWidth: 1, categories: [''], labels:{ enabled: false } }, title:{ text:'' }, yAxis: { gridLineColor: '#FFFFFF', minorGridLineWidth: 0, lineColor: '#FFFFFF', gridLineWidth: 0, title: { text: '' }, labels:{ enabled: false } }, exporting: { enabled: false }, legend:{ enabled: false }, plotOptions: { series: { stacking: 'normal' } }, tooltip: { enabled: false }, series: [{ name: '', data: [5] }, { name: '', data: [5] },{ name: '', data: [0] }] }); </script> <style> .chart-container .highcharts-grid { display: none; } </style> </body> </html> 声明下不能有任何代码。这是最有可能的罪魁祸首,您可以通过在该块中添加if来解决此问题。如果您想自己测试一下,可以运行以下非常简单的示例,并在尝试运行时验证解释器是否出错。

pass

其次,由于在SO上重新编码很难分辨,但您可能也错误地使用了混合空格和制表符。如果你使用vim,你可以if 1 == 1: else: print "This will never print." 显示不可见的字符,并确保你是一致的。

答案 1 :(得分:0)

您的代码有if语句,没有说明:

if("false" in retweet_ed):
    #call what u want to do here
    #for example :
    #fav(tweet_sid)
    #retweet(tweet_sid)

Python期望缩进,但由于所有内容都被注释掉,所以没有。

这基本上是错误所指示的:

  

2016-12-28 T04:32:08.770168 + 00:00 app [worker.1]:else:

     

2016-12-28 T04:32:08.770171 + 00:00 app [worker.1]:^

     

2016-12-28 T04:32:08.770172 + 00:00 app [worker.1]:IndentationError:   期望一个缩进的块

您不能拥有不遵循缩进块的else语句(即if块,甚至是for。)

如果您希望将if保留为普通代码,请添加pass语句,如下所示else

if("false" in retweet_ed):
    #call what u want to do here
    #for example :
    #fav(tweet_sid)
    #retweet(tweet_sid)
    pass

然后,代码不会引发任何IndentationError

答案 2 :(得分:0)

您需要在if语句中包含一些内容。只需输入

即可
pass

或者现在设置一个无用的变量。

而且,我认为缩进所有内容(因为第一行,如果我错了,请纠正我。)