2015-04-07 43 views
1

我想分析一个Python字符串(或对象),并从中提取它的“部分”。是否有可能用python解析python并提取可执行表达式?

例如,给出以下:

def foo(): 
    xs = [x ** x 
      for x in range(100) 
      if x % 2 
    ] 

    for x in xs: 
     print x 
     print 'cool' 

我想可以把它解析成类似表述:

1. xs = [x ** x 
       for x in range(100) 
       if x % 2 
      ] 


2.  for x in xs: 

3.  print x 

4.  print 'cool' 

从谷歌上搜索的时候,我发现了inspect模块,可通过getsourcelines将一个对象转换为其源代码,但它完全不可知的python语法。我正在寻找可以解析出表达式的内容。

  1. 这是可能的吗?
  2. 有没有图书馆呢?
+0

如果您打开要读取的源代码,您可以保持计数您的缩进程度,并用它来确定新语句的位置。 – RNikoopour

回答

2

Python在ast模块中内置了解析器。它不会以您想要的形式准确地返回您想要的内容,但ast.parse()方法可以为您提供一个抽象语法树,通过该语法树可以轻松构建所需内容。

+1

'编译器'已弃用。 https://docs.python.org/2/library/ast.html –

+0

嗯,你会看看那个。谢谢,我会更新答案。 – dcrosta

相关问题