如何将诸如“+”的字符串转换为运算符加号?谢谢!将字符串转换为运算符
17
A
回答
56
使用查找表:
import operator
ops = { "+": operator.add, "-": operator.sub } # etc.
print ops["+"](1,1) # prints 2
-12
2
您可以尝试使用eval(),但如果字符串不是来自你很危险。 否则你可能会考虑创建一个字典:
ops = {"+": (lambda x,y: x+y), "-": (lambda x,y: x-y)}
等等,然后调用
ops['+'] (1,2)
或者,用户输入:
if ops.haskey(userop):
val = ops[userop](userx,usery)
else:
pass #something about wrong operator
12
import operator
def get_operator_fn(op):
return {
'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.div,
'%' : operator.mod,
'^' : operator.xor,
}[op]
def eval_binary_expr(op1, oper, op2):
op1,op2 = int(op1), int(op2)
return get_operator_fn(oper)(op1, op2)
print eval_binary_expr(*("1 + 3".split()))
print eval_binary_expr(*("1 * 3".split()))
print eval_binary_expr(*("1 % 3".split()))
print eval_binary_expr(*("1^3".split()))
1
在我看来,提出阿姆农答案是正确的。 http://effbot.org/zone/simple-top-down-parsing.htm
0
存在对应于各运营商
OPERATORS = {'+': 'add', '-': 'sub', '*': 'mul', '/': 'div'}
def apply_operator(a, op, b):
method = '__%s__' % OPERATORS[op]
return getattr(b, method)(a)
apply_operator(1, '+', 2)
相关问题
- 1. 将字符串转换为运算符?
- 2. 将字符串转换为运算符
- 3. VBA - 将字符串转换为算术运算符
- 4. 如何将lambda运算符的右侧转换为字符串?
- 5. 如何将字符串转换为Java中的运算符?
- 6. python将字符串转换为运算符
- 7. 如何在Java中将字符串转换为运算符?
- 8. 转换字符串(算术运算)
- 9. 将字符串转换为字符串
- 10. 将字符串转换为字符串
- 11. 将字符串转换为字符串
- 12. 将字符串转换为算术运算
- 13. 将字符串转换为int,int转换为字符串
- 14. 在运算符中,数字被转换为字符串
- 15. 将char转换为算术运算符
- 16. 将字符串转换为字符ascii
- 17. Java - 将字符串转换为字符[]
- 18. C++ - 将字符串转换为字符
- 19. 将字符*转换为字符串
- 20. 将字符串转换为字符
- 21. 将字符串转换为const *字符
- 22. 将字符[]转换为字符串
- 23. InfixToPostfix将字符转换为字符串
- 24. 将字符串转换为字符
- 25. 将char字符串转换为字符
- 26. 将字符串转换为字符
- 27. 将字符串转换为“_”
- 28. 将字符串转换为
- 29. 将字符串转换为?
- 30. typeof运算字符串转换
而不是一个神奇的方法,你可以转换成其他的事情串并评估HTTP:
但是,您也可以这篇文章关于数学解析器感兴趣://stackoverflow.com/questions/729248/python-eval-and-globals – Xinus