字符串在搜索中无法通过and or进行匹配。为什么?
string = 'This is some text with an email add: myusername@domain.com'
a = re.findall('[\w]+@[\w]+\.[\w]{3}',string)
b = string.split(' ')
print (a)
print (b)
if a==b:
# also tried: if a in b:
print(a, ' yes it is found')
else:
print('not !?!?!')
['myusername@domain.com']
['This', 'is', 'some', 'text', 'with', 'an', 'email', 'add:', 'myusername@domain.com']
not !?!?!
答案 0 :(得分:2)
a
和b
都是列表。他们不平等。并且a
不是b
的元素。 b
仅包含字符串,而不包含列表。
如果要检查a
中包含的单个字符串是否也包含在b
中,则可以执行以下操作:
if a[0] in b:
print("Yes, a[0] is in b")
通常,如果您要检查一个列表中的任何元素是否包含在另一个列表中,可以通过多种方法进行,但这是一种方法:
if any(element in b for element in a):
print("Some element of a is in b")
答案 1 :(得分:0)
a不等于b,因此它将永远不会进入if语句中,您应该遍历一个列表,并将其元素与另一个列表进行比较,如下所示
import re
string = 'This is some text with an email add: myusername@domain.com'
a = re.findall('[\w]+@[\w]+\.[\w]{3}',string)
b = string.split(' ')
print (a)
print (b)
for aa in a:
if aa in b: # tried
print(a, ' yes it is found')
else:
print('not !?!?!')