我是python的新手,我试图运行这个脚本,但在这部分中不断出现缩进错误:
while (time.time()-self.time) < self.limit
我试图以不同的方式删除所有缩进然后ree-indent但似乎没有任何工作。有没有人有想法?我正在使用Spyder来运行它。
start_time = time.time() #grabs the system time
keyword_list = ['twitter'] #track list
from pymongo import MongoClient
import json
class listener(StreamListener):
def __init__(self, start_time, time_limit=60):
self.time = start_time
self.limit = time_limit
def on_data(self, data):
while (time.time()-self.time) < self.limit:
try:
client = MongoClient('localhost', 27017)
db = client['twitter_db']
collection = db['twitter_collection']
tweet = json.loads(data)
collection.insert(tweet)
return True
except BaseException, e:
print 'failed ondata,', str(e)
time.sleep(5)
pass
exit()
def on_error(self, status):
print statuses
答案 0 :(得分:0)
您的类的方法必须在class
语句下缩进,并且方法的主体必须在def
行下缩进。 try
和except
块的主体必须在这些语句下缩进。
start_time = time.time() #grabs the system time
keyword_list = ['twitter'] #track list
from pymongo import MongoClient
import json
class listener(StreamListener):
def __init__(self, start_time, time_limit=60):
self.time = start_time
self.limit = time_limit
def on_data(self, data):
while (time.time()-self.time) < self.limit:
try:
client = MongoClient('localhost', 27017)
db = client['twitter_db']
collection = db['twitter_collection']
tweet = json.loads(data)
collection.insert(tweet)
return True
except BaseException, e:
print 'failed ondata,', str(e)
time.sleep(5)
exit()
def on_error(self, status):
print statuses
答案 1 :(得分:0)
您需要修复while条件语句的语法。
首先,正如其他几个人所提到的那样<
不是python运算符。你也不想要一个分号。正确的语法是while (time.time()-self.time) < self.limit:
分号在任何python代码中都没有特别必要。它仅在特定情况下偶尔使用,如果多行语句在一行上,则更容易阅读。但是,这些语句不应包含while
,if
或for
等关键字。现在(在学习python时),我建议完全避免使用分号。
最后,(这可能是stackOverflow无法正确格式化)您的函数on_data
和on_error
有不正确的缩进。在python 2.7中强制实践并且在3.x中强制要求不要混合制表符和空格(实际上只是使用空格)以及缩进规则,请参阅the official style guide或wikipedia's explanation