最近我在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
答案 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
或者现在设置一个无用的变量。
而且,我认为缩进所有内容(因为第一行,如果我错了,请纠正我。)