如果我有一个Python代码字符串,我如何判断它是否有效,即如果在Python提示符下输入,它是否会引发语法错误?我原以为使用compiler.parse就可以了,但显然在Python3中该模块已经被删除了.有没有一种方法在Python3中也适用.显然,我不想执行代码,只是判断它的语法.

推荐答案

使用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

Python-3.x相关问答推荐

根据其他数据框架的列顺序从数据框架中进行 Select

是什么原因导致Pandas=2.1.4和Pandas=1.4.2之间Pandas DataFrame中从Float64到int32的连续列转换方式不同

如何从枚举中获取某个值?

文件名中的文件打开和撇号

Python - 根据条件附加 NULL 值

GUI 仍然有效并且没有错误消息时图形意外冻结 |具有多线程的 Pyside6 和 pyqtgraph (Python 3.11.4)

基于其他列的条件向Panda数据框中添加值到新列

ImportError:抓取数据后找不到 html5lib

平移数组

裁剪复数以解决 exp 中的溢出错误

日志(log)模块不适用于 Python3

具有两个或多个返回参数的函数注释

为什么中断比引发异常更快?

是否在未完成初始化的对象上调用了 del?

如何等待 create_task() 创建的任务完成?

从 csv 中删除单行而不复制文件

map 对象不是 JSON 可序列化的

命名参数可以与 Python 枚举一起使用吗?

如何为 anaconda python3 安装 gi 模块?

字典理解中的操作顺序