How to tell if a string contains valid Python code

后端 未结 2 1153
再見小時候
再見小時候 2020-11-30 10:12

If I have a string of Python code, how do I tell if it is valid, i.e., if entered at the Python prompt, it would raise a SyntaxError or not? I thought that using comp

相关标签:
2条回答
  • 2020-11-30 10:22

    The compiler module is now a built-in.

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

    Compile the source into a code or AST object. Code objects can be executed by an exec statement or evaluated by a call to eval(). source can either be a string or an AST object. Refer to the ast module documentation for information on how to work with AST objects.

    The AST parser is now a seperate module.

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

    Parse an expression into an AST node. Equivalent to compile(expr, filename, mode, ast.PyCF_ONLY_AST).

    0 讨论(0)
  • 2020-11-30 10:44

    Use 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
    
    0 讨论(0)
提交回复
热议问题