<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Ahoj,<div><br></div><div>teoreticky nejlepší přístup je vyrobit si parser, který ti ten výraz převede na AST strom, a ten strom pak “provést”, což je vlastně jen průchod do hloubky. </div><div><br></div><div>Ten parser si můžeš vyrobit sám implementací nějakého parser algoritmu - vzhledem k tomu, že vstup bude asi celkem malý a gramatika ne moc kompletní, tak je to celkem schůdná cesta. Nebo můžeš použit nějakou knihovnu pro tvorbu parserů (jsou i pro Python), no a nebo můžeš využít přímo parser Pythonu - modul ast. Rozdíl oproti eval() pak bude ten, že bude pod tvoji kontrolou, co to bude dělat, takže hodně snížíš bezpečností rizika. </div><div><br></div><div>Když trochu pogooglím, tak najdu:</div><div><br></div><div><a href="https://gist.github.com/ircmaxell/1232629">https://gist.github.com/ircmaxell/1232629</a></div><div><br></div><div><a href="https://stackoverflow.com/q/114586/196206">https://stackoverflow.com/q/114586/196206</a></div><div><br></div><div><a href="https://stackoverflow.com/q/594266/196206">https://stackoverflow.com/q/594266/196206</a></div><div><br></div><div><a href="https://gist.github.com/mgood/3276107">https://gist.github.com/mgood/3276107</a></div><div><br></div><div> ...a spousta dalšího </div><div><br><div id="AppleMailSignature">Petr Messner</div><div><br>22. 8. 2018 v 9:30, Petr Blahos <<a href="mailto:petrblahos@gmail.com">petrblahos@gmail.com</a>>:<br><br></div><blockquote type="cite"><div><div dir="ltr">Přátelé,<div><br></div><div>doporučíte mi někdo knihovnu pro vyhodnocení jednoduchých matemetických</div><div>výrazů se symboly? Představuju si to asi takto: Budu mít text typu:</div><div>expr = """R=1000*(VAR1+VAR2/2)-VAR3"""</div><div><br></div><div>a pak udělám: </div><div>result = knihovna.funkce(expr, {"VAR1": 54, "VAR2": 8", "VAR3": 982})</div><div><br></div><div>Případně ještě knihovna.zkontroluj_vyraz(expr).</div><div>Potřebuju tam opravdu jenom + - * / a závorky.</div><div><br></div><div>Díky,</div><div>Petr</div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><span style="font-size:12.8px">--</span><div style="font-size:12.8px"><a href="http://petr.blahos.com/" target="_blank">http://www.blahos.com/</a></div><div style="font-size:12.8px"><a href="http://traceability.cz/" target="_blank">http://traceability.cz/</a></div></div></div></div></div></div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Python mailing list</span><br><span><a href="mailto:python@py.cz">python@py.cz</a></span><br><span><a href="http://www.py.cz/mailman/listinfo/python">http://www.py.cz/mailman/listinfo/python</a></span><br><span></span><br><span>Visit: <a href="http://www.py.cz">http://www.py.cz</a></span><br></div></blockquote></div></body></html>