将字符串转换为预定义的python变量

时间:2011-04-06 04:35:31

标签: python

我想知道如何将字符串转换为python定义的变量。

基本上我想这样做。

if value1 operator value2:
      print True 

我的运算符是一个字符串'==' , '>', '<', '!='   这样就变成了

if value1 == value2:
      print True

我尝试了operator = getattr(sys.modules[__name__], operator ),但它适合上课。 感谢。

4 个答案:

答案 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. (严重的是,运算符模块的解决方案可能是更好的选择)