字符串无法通过和或通过“在”搜索中匹配

时间:2019-11-18 21:06:50

标签: python regex

字符串在搜索中无法通过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 !?!?!

2 个答案:

答案 0 :(得分:2)

ab都是列表。他们不平等。并且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 !?!?!')