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