python 中的精确字符串匹配 - 两个列表元素的比较

Exact string matching in python - Comparison of two list elements

我正在尝试比较 python 中的两个列表元素。如果两个元素完全匹配,则返回true,否则返回false。

元素如下所示:

list1_element_1: ['GigabitEthernet0/6/4/1']

list2_element_1: ['GigabitEthernet0/6/4/1.100']

我尝试了多种比较这两个元素的方法,包括正则表达式。 下面是我用来比较元素的函数:

def find_word(text,search):
    result = re.findall('\b'+search+'\b', text)
    if len(result)>0:
        return True
    else:
        return False

预期结果:

find_word('GigabitEthernet0/6/4/1.100','GigabitEthernet0/6/4/1') FALSE

实际结果:

find_word('GigabitEthernet0/6/4/1.100','GigabitEthernet0/6/4/1') TRUE, because 'GigabitEthernet0/6/4/1' is existing in element 'GigabitEthernet0/6/4/1.100', I guess?

只有当两个列表元素完全相同时才应返回 True!

谢谢!

我不想告诉你这个,但你想多了——你可以只使用常规的 == 运算符:

list1_element_1: ['GigabitEthernet0/6/4/1']
list2_element_1: ['GigabitEthernet0/6/4/1.100']
list3_element_1: ['GigabitEthernet0/6/4/1']

print(list1_element_1 == list2_element_1)  # False
print(list1_element_1 == list3_element_1)  # True

对于字符串,== 运算符 returns True 如果它们完全匹配。对于列表,它 returns True 如果长度相同并且相应的元素完全匹配(.__eq__() 方法用于此比较,如果您尝试比较自定义 类 - 所有 built-in 类 都实现了他们的平等概念)。所以如果你有一个字符串列表,你可以测试它是否等于另一个字符串列表:

print(['str1', 'str2', 'str3'] == ['str1', 'str2', 'str3'])  # True
print(['str1', 'str2', 'str3'] == ['str1', 'str3', 'str2'])  # False

只需使用:

def find_word(text, search):
    return text == search