19

Python コードの文字列がある場合、それが有効かどうか、つまり、Python プロンプトで入力した場合に SyntaxError が発生するかどうかを確認するにはどうすればよいですか? 使用するとうまくいくと思いましたcompiler.parseが、どうやらそのモジュールはPython 3で削除されました.Python 3でも動作する方法はありますか.明らかに、コードを実行したくないので、その構文を確認してください.

4

2 に答える 2

25

使用ast.parse:

import ast
def is_valid_python(code):
   try:
       ast.parse(code)
   except SyntaxError:
       return False
   return True

>>> is_valid_python('1 // 2')
True
>>> is_valid_python('1 /// 2')
False
于 2012-08-07T22:06:08.367 に答える
4

コンパイラ モジュールがビルトインになりました

compile(source, filename, mode[, flags[, dont_inherit]])

ソースをコードまたは AST オブジェクトにコンパイルします。コード オブジェクトは、exec ステートメントによって実行されるか、eval() の呼び出しによって評価されます。source は、文字列または AST オブジェクトのいずれかです。AST オブジェクトの操作方法については、ast モジュールのドキュメントを参照してください。

AST パーサーは別のモジュールになりました。

ast.parse(expr, filename='<unknown>', mode='exec')

式を AST ノードに解析します。に相当しcompile(expr, filename, mode, ast.PyCF_ONLY_AST)ます。

于 2012-08-07T22:06:55.573 に答える