2015-04-07 36 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