首页 > 解决方案 > python中的精确字符串匹配 - 两个列表元素的比较

问题描述

我正在尝试比较 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!

谢谢!

标签: pythonstring-comparison

解决方案


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

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

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

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

推荐阅读