web-dev-qa-db-ja.com

エラー:ステートメントが必要です、pyが見つかりました:Dedent

私たちは大学向けの小さなウェブアプリを開発することを望んでいます/強制されています。さて、上記の奇妙なエラーが発生するまで、私たちはすべてを始めました。

"Statement expected、found py:Dedent"

エラーは、次のコード行によって発生します。

def get_reset_token(self, mysql, userid):
    try:
        conn = mysql.connect()
        cursor = conn.cursor()
        cursor.execute("""SELECT token FROM tralala_reset_password 
                       WHERE uid=(%s)""", userid)
        data = cursor.fetchall()
        cursor.close()
        conn.close()
        return data[0]
    except Exception as e:
        app.logger(str(e))
        return ""

Pycharmは "return" ""ステートメントをマークし始めました。

宜しくお願いします、

マリアン

10
Keine-Ahnung

エラーを無視することで問題は解決しました。他のエディタにコピーされましたが、ここには何もありません。だから、pycharmの間違いのようです。

宜しくお願いします、

マリアン

13
Keine-Ahnung

また、かなりの期間頭をひっかいていましたが、ついにそれを見つけました。

「pycharmは特定のcharを認識しませんでした」スコープの外にあります

これを書くとき:

class Foo:
   def complicated_method(self):
       for f to self.whatever:
           # plenty of code goes here
           pass
   def another one():
       # here too
       pass

そして、あなたはそれを書き直すことにしました:

class Foo:
   def complicated_method(self):
           # plenty of code goes here  <- mistakenly leaved unindented, many unseen errors here
           pass
   def another one(self):
       # here too
       pass
    ....
   def do(self):
       for f in self.whatever:
           self.complicated_method() <- here will be Py:DEDENT

可能であれば、長いメソッドをリファクタリングし、Py:DEDENT二度とあなたを悩ますことはありません

2
im_infamous

私の問題は、インデントの不一致が原因でした。ドキュメントのほとんどはスペースでインデントされていますが、コピーされたタブがいくつかあり、Py:DEDENTエラーが発生しました。タブをスペースに置き換えると、エラーが修正されました。

1
David Warnke