Python IndentationError unindent与任何外部缩进级别都不匹配

pap*_*oyo 8 python indentation

我是初学者python,

我有这个错误:

Error : 
def on_data(self,data):
                      ^
IdentationError : unindent does not match any outer indentation level
Run Code Online (Sandbox Code Playgroud)

我用notepad++in 编码windows 8.1.我不明白为什么我有这个错误,我已经注意到标签和空间.

我想在self.file中保存数据

这是我的代码:

from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
from tweepy import Stream
import tweepy
import time



class StdOutListener(StreamListener):

    def __init__(self,file):
        self.file = file

    def on_data(self, data):

        print data
        self.file.write(data)
        return True

    def on_error(self, status):
        print status


def main() :
    file = open('work.txt','w')
    listn = StdOutListener(file)
    consumer_key=""
    consumer_secret=""

    access_token=""
    access_token_secret=""

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    #api = tweepy.API(auth)

    #filename=open('helloworld.txt','r')
    #f=filename.readlines()
    #filename.close()

    #for line in f:
    #   api.update_status(line)

    stream = Stream(auth, listn)
    stream.filter(track=['lol'])
    file.close()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 28

您正在混合制表符和空格.不要那样做.具体来说,__init__函数体使用制表符缩进而您的on_data方法不缩进.

以下是我的文本编辑器中代码的屏幕截图; 我将制表位设置为8个空格(这是Python使用的)并选择了文本,这使编辑器显示带有连续水平线的制表符:

突出显示的代码,标签显示为行

您的编辑器设置为将标签扩展到每四列,因此方法似乎排成一行.

运行您的代码:

python -tt scriptname.py
Run Code Online (Sandbox Code Playgroud)

并修复找到的所有错误.然后将编辑器配置为使用空格进行缩进; 一个好的编辑器每次使用TAB密钥时都会插入4个空格.


Ser*_*raf 6

在记事本++上如果你只是按ctrl + a得到那个错误,按一下TAB按钮,它会在你的代码中的任何地方添加标签,然后使用shift + tab删除你刚刚添加的额外标签.它会将所有"标签"更改为4个空格.当然,转到设置 - >首选项 - >选项卡设置 - >替换为空格.未来的标签现在将是4个空格.