web-dev-qa-db-ja.com

Python IndentationError unindentはどの外側のインデントレベルとも一致しません

私はpythonの初心者です。

私はこのエラーがあります:

Error : 
def on_data(self,data):
                      ^
IdentationError : unindent does not match any outer indentation level

notepad++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()
8
papiyoyo

タブとスペースが混在しています。しないでください。具体的には、__init__関数本体はタブでインデントされますが、on_dataメソッドはありません。

これが私のテキストエディターでのコードのスクリーンショットです。タブストップを8スペース(Pythonが使用するもの))に設定し、テキストを選択すると、エディターに連続した水平線でタブが表示されます。

highlighted code with tabs shown as lines

代わりに、エディターをタブを4列ごとに展開するように設定しているため、メソッドが表示されます

次を使用してコードを実行します。

python -tt scriptname.py

見つかったすべてのエラーを修正します。次に、インデントにspacesのみを使用するようにエディターを構成します。優れたエディターは、使用するたびに4つのスペースを挿入します TAB キー。

28
Martijn Pieters

Notepad ++では、Ctrl + Aだけでエラーが発生した場合、TABボタンを1回押すと、コードのすべての場所にタブが追加され、shift + tabを使用して追加したばかりのタブが削除されます。すべての「タブ」が4つのスペースに変更されます。もちろん、[設定]-> [設定]-> [タブ設定]-> [スペースで置換]に移動します。今後のタブは4スペースになります。

6
Seraf

同じ問題が何度もありました。特にエディタからオンラインで数行のコードを貼り付けようとしたときに起こりました。スペースは「タブ」または「スペース」として適切に登録されていません。

ただし、修正は非常に簡単でした。その特定のセット内のすべてのコード行の間隔を削除し、タブで正しく間隔を空ける必要がありました。これで問題が解決しました。

2
Aswin
0
Emack333