2

例如::如何停止`ast.parse`將數值轉換爲int/float?

>>> import ast 
>>> print(type(ast.parse('1.2', mode='eval').body.n) 
float 

如何讓解析器轉換Python源文件成語法樹,同時保留在str類型的節點的原始值?因爲我需要使用分數儘可能精確地將例如'1.2'轉換爲精確值,而不會丟失任何精度(值1.2不能精確地以浮點格式表示)。

最好我希望這樣做,而不需要重新實現解析器。也許有其他解析器比ast模塊更適合這個。

順便說一句,我需要解析的不僅僅是表達式而是程序。

+0

解析Python源代碼涉及將文字解析爲適當的類型。你可以使用''「」1.2「''而只是將值作爲字符串處理? – BrenBarn

+1

最好我會保留值'1.2',而不必爲每個值添加引號。 – koo

+0

什麼是'mpfr'和'mpq',當它們在標題,正文或評論中沒有提及時,它們與這個問題有什麼關係? – Charles

回答

0

使用AST的最先進的工具,我知道的是前者astng項目備份pylint和類似的工具logilab。現在它被稱爲Astroid和可從https://bitbucket.org/logilab/astroid/如果它不會幫助,那麼可能什麼都不會做。