python - 将 Python 解析为实例列表

标签 python parsing

我想将纯 Python 代码解析为某些类的实例列表之类的东西,这些类代表原始代码的各个部分。

一个例子:

>>> text = '''
... for x in range(100):
...     print x
... '''
>>> tree = parse(text)
>>> print tree
Tree( ForLoop(x,Range(100), [Stmt(Print(x))]) )
# here ForLoop, Range, Stmt, Print are all custom classes

最佳答案

ast module拥有您需要的工具:

>>> import ast
>>> text = '''
for x in range(100):
    print x
'''

>>> m = ast.parse(text)
>>> ast.dump(m)
"Module(body=[For(target=Name(id='x', ctx=Store()), iter=Call(func=Name(id='range', ctx=Load()),
       args=[Num(n=100)], keywords=[], starargs=None, kwargs=None), 
       body=[Print(dest=None, values=[Name(id='x', ctx=Load())], nl=True)], orelse=[])])"

关于python - 将 Python 解析为实例列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475858/

相关文章:

python - 在 Python 中将函数分配给带有函数名称的字符串

parsing - 为什么 NASM 在操作数中使用有效指令助记符作为符号名称没有问题?

java - 从多行文本文件中获取整数 vector

python - “int”对象不可调用?

python - 比较 python 和 matlab 中的 fsolve 结果

ios - 是否有适用于 ios 的良好 CSV 解析器?

c - 使用逗号在 c 中解析 .csv 文件时出现问题

c# - JObject 内存不足

python - python 中的 URL 编码/解码(整个 url,而不仅仅是路径)

python - 根据 Python 中的另一个列表对字典列表进行排序