找到字符串数学运算符

时间:2015-02-11 19:04:55

标签: python

我需要帮助。我想验证存储在列表中的字符是否存在于字符串中;

我的清单:

obj = ['<','>','=','<=']

我的字符串

x ='a<=b'

由于

2 个答案:

答案 0 :(得分:1)

运营商<=<不同,<<<tests='''\ a<=b a<b a>b a<<<b a=b a==b a>=b''' import re ops=['<','>','=','<='] pat='([{}]+)'.format(''.join({c for op in ops for c in op})) for test in tests.splitlines(): m=re.search(pat, test) if m: print 'Line: "{}", Operator: "{}", in ops: {}'.format( test, m.group(0), m.group(0) in ops) 不同。因此,您需要将构成运算符的多个字符与其周围的非运算符字符分开。

在大多数情况下,您可以使用parser来执行此操作。

在一个简单的例子中,最好的方法是使用正则表达式:

Line: "a<=b", Operator "<=", in ops: True
Line: "a<b", Operator "<", in ops: True
Line: "a>b", Operator ">", in ops: True
Line: "a<<<b", Operator "<<<", in ops: False
Line: "a=b", Operator "=", in ops: True
Line: "a==b", Operator "==", in ops: False
Line: "a>=b", Operator ">=", in ops: False

打印哪些:

<

如果您不关心<=any的区别,您可以使用>>> any(op in 'a<=b' for op in ['<','>','=','<=']) True 对照列表测试字符串的每个字符:

<

但这并不区分<=和{{1}},它们是不同的运算符。

答案 1 :(得分:1)

  1. 使用for循环来迭代列表obj中的项目。
  2. 使用if i in x检查列表obj中的项目是否存在于字符串x中。
  3. 根据步骤2的状态,在result字典中添加键值。
  4. 打印结果字典。
  5. e.g。

    >>> obj = ['<','>','=','<=']
    >>> x ='a<=b'
    >>> result = {} 
    >>> for i in obj:
    ...     if i in x:
    ...        result[i]="Present in string."
    ...     else:
    ...        result[i]="Not in string"
    ... 
    >>> import pprint
    >>> pprint.pprint(result)
    {'<': 'Present in string.',
     '<=': 'Present in string.',
     '=': 'Present in string.',
     '>': 'Not in string'}
    >>> 
    

    有关in__contains__()字符串方法的更多信息: -

    >>> "a" in "abcde"
    True
    >>> "z" in "abcde"
    False
    >>> "abcde".__contains__("a")
    True
    >>> "abcde".__contains__("z")
    False