I want to know if there is some way to translate fragments of text into operators (e.g. <, >, <>, ==, etc) to use in conditional expressions.
I've got a data structure which is a list of lists. A single list might look like: MyInnerList = ["MyVar",">",7] or MySecondInnerList = ["MyOtherVar","<=",25.5] These all go in something like: MyMainList = [["MyVar",">",7],["MyOtherVar","<=",25.5], and so on...] I have some target device which I go query with the names in the first field (e.g. "MyVar") to get values back. The target device returns all values as strings. Then I want to compare to the value in the third field. In theory the third field might contain floats, integers, or maybe some day strings. So I access the middle operator field like this: OperatorType = MyInnerList[1] # This gets back ">" or "<=" for example TestVal = MyInnerList(2) TargetVal gets filled in by talking to my target device. Then I want to compare TestVal and TargetVal using OperatorType. I'm thinking I have to do something like: if OperatorType == ">": # then do a greater than compare here. BoolVal = TestVal > TargetVal elif OperatorType == ">=": # then do a greater or equal to here. BoolVal = TestVal >= TargetVal and so on. It would seem a lot easier to do: BoolVal = TargetVal EvalStrToOper(">") MyInnerList(2) where EvalStrToOper creates an immediate > sign that then allows that line to get evaluated by the interpreter. Is there any way to do that in Python? Of course, I'd have to guarantee that the ">" or other operators are really legal operators. Also, I'd have to test MyInnerList(2) to make sure it is an appropriate type. -- http://mail.python.org/mailman/listinfo/python-list