首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串计算为值

将字符串计算为值
EN

Stack Overflow用户
提问于 2013-02-03 10:01:24
回答 4查看 19.7K关注 0票数 4

在Python中可以计算字符串中的术语吗?例如:

代码语言:javascript
复制
string_a = "4 ** (3 - 2)"

unknown_function(string_a) = 4

这个是可能的吗?在我的例子中有没有模仿"unknown_function“的函数?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-03 10:04:57

有一个eval

代码语言:javascript
复制
eval(string_a)
# 4

但是如果string_a来自除你之外的任何人,在任何情况下都不要使用这个,因为他们可以easily hack into your system and destroy your files!

票数 11
EN

Stack Overflow用户

发布于 2013-02-03 10:29:07

就像sympy对你的last question来说是一个有用的模块一样,它可以在这里应用:

代码语言:javascript
复制
>>> import sympy
>>> sympy.sympify("4**(3-2)")
4

甚至

代码语言:javascript
复制
>>> sympy.sympify("2*x+y")
2*x + y
>>> sympy.sympify("2*x+y").subs(dict(x=2, y=3))
7

但请注意,这将返回sympy对象,如果您希望从中获得整数或浮点数,则应显式执行转换:

代码语言:javascript
复制
>>> type(sympy.sympify("4**(3-2)"))
<class 'sympy.core.numbers.Integer'>
>>> int(sympy.sympify("4**(3-2)"))
4

我拼凑出了一个将字符串表达式转换为函数here的方法,这有点可爱。

票数 12
EN

Stack Overflow用户

发布于 2013-02-03 10:02:55

可以,您可以使用eval函数。

代码语言:javascript
复制
>>> string_a = "4 ** (3 - 2)"
>>> eval(string_a)
4
>>> 

您可以在documentation中阅读更多内容

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14668750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档