2011-04-06 84 views
1

我想知道如何將字符串轉換爲python定義的變量。將字符串轉換爲預定義的python變量

基本上我想這樣做。

if value1 operator value2: 
     print True 

我的操作是一個字符串'==' , '>', '<', '!=' ,使之成爲

if value1 == value2: 
     print True 

我試圖operator = getattr(sys.modules[__name__], operator),但它的類工作。 謝謝。

+0

的問題是好的,但標題不是很清楚。 – 2011-04-06 04:43:54

+0

嘿得到了解決方案。 – amit 2011-04-06 05:08:03

回答

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 
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 
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 
0
if eval(repr(value1) + operator + repr(value2)): 
    print True 

或者更簡單地說

print eval(repr(value1) + operator + repr(value2)) 

只是要小心,eval得到一個不好的名聲= P (嚴重壽,與運營商模塊的解決方案可能是一個更好的選擇)