我需要帮助。我想验证存储在列表中的字符是否存在于字符串中;
我的清单:
obj = ['<','>','=','<=']
我的字符串
x ='a<=b'
由于
答案 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)
for
循环来迭代列表obj
中的项目。if i in x
检查列表obj
中的项目是否存在于字符串x
中。 result
字典中添加键值。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