是否可以用python解析python并提取可执行表达式?

时间:2015-04-07 02:54:10

标签: 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' 

通过Google搜索,我找到了inspect模块,它可以通过getsourcelines将对象转换为源,但它与python语法完全无关。我正在寻找可以解析表达式的东西。

  1. 这可能吗?
  2. 有图书馆吗?

1 个答案:

答案 0 :(得分:2)

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