用Python/PySide編寫的我的應用程序將使用用戶定義的腳本進行定製。有時候用戶只能輸入一個返回值的表達式,有時候也可以是整個腳本(即Python中常常稱爲「suite」的多語句)。我不知道他/她將選擇哪個選項。無論用戶輸入什麼內容,它都會存儲在一個字符串中,然後該字符串將被解析並執行。Python - 解析表達式或套件
是否有任何簡單的方法來檢查一個字符串是否包含python表達式或套件?我知道有parser.expr()
或parser.suite()
或compile(,,'expr')
或compile(,,'eval')
函數,但對於這些我需要知道,如果我要解析/編譯表達式或套件。
我可以把解析操作放到try/except中,並嘗試兩種方法(如果其中一個通道那麼它是正確的),但在我看來這不是一個可行的解決方案,因爲用戶腳本可以包含任何其他語法錯誤和try/except可以將這些錯誤混入到我的表達式/套件決策邏輯中。
另一種方法是自己檢查字符串是否包含分號或換行符(當然是字符串或註釋外部),表示它是套件,但我不確定這是否足夠健壯。
是否有任何其他更簡單的方法來區分存儲在字符串中的表達式或套件?