我想知道如何将字符串转换为python定义的变量。
基本上我想这样做。
if value1 operator value2:
print True
我的运算符是一个字符串'==' , '>', '<', '!='
这样就变成了
if value1 == value2:
print True
我尝试了operator = getattr(sys.modules[__name__], operator )
,但它适合上课。
感谢。
答案 0 :(得分:1)
使用操作员模块:
import operator
def op(str, value1, value2):
lookup = {'==': operator.eq, '>': operator.gt,
'<': operator.lt, '!=': operator.ne}
if str in lookup:
return lookup[str](value1, value2)
return False
v1 = 1
v2 = 2
print op("!=", v1, v2)
# True
答案 1 :(得分:0)
>>> import operator
>>> ops = {'==': operator.eq,
... '>': operator.gt,
... '<': operator.lt,
... '!=': operator.ne}
>>> ops['=='](1,2)
False
>>> ops['=='](2,2)
True
>>> ops['>'](2,2)
False
>>> ops['>'](3,2)
True
>>> ops['!='](3,2)
True
答案 2 :(得分:0)
我认为你需要明确地将你的运算符与python的关联:
import operator as op
oper = '==' ## or '<', etc...
value1 = 1
value2 = 2
opdict = {'<': op.lt, '>': op.gt,
'<=': op.le, '>=': op.ge,
'==': op.eq, '!=': op.ne}
if opdict[oper](value1, value2):
print true
答案 3 :(得分:0)
if eval(repr(value1) + operator + repr(value2)):
print True
或更简单
print eval(repr(value1) + operator + repr(value2))
请注意,eval
声誉不好= P.
(严重的是,运算符模块的解决方案可能是更好的选择)