如何通过python或regex忽略两个索引来比较两个字符串

2024-09-29 00:16:15 发布

您现在位置:Python中文网/ 问答频道 /正文

语言:Python 3

我很想知道如何通过忽略对象“DateandTime”的值来比较下面的字符串,因为它永远不会相同。因此,在比较过程中,仅此一点是不可忽略的

Str1='''{"Name":"Denu","Contact":12345678, "DateandTime":20200207202019}'''

Str2= '''{"Name":"Denu","Contact":12345678, "DateandTime":20200207220360}'''

任何帮助都将不胜感激


Tags: 对象字符串name语言过程contactstr1str2
2条回答

您可以检查^{}是否相等,但不关心的键除外:

def eq(d1, d2):
    keys = set(d1.keys())
    keys.update(d2.keys())
    return all(d1.get(k) == d2.get(k) for k in keys if k != "DateandTime")

d1 = {"Name": "Denu", "Contact": 12345678, "DateandTime": 20200207202019}
d2 = {"Name": "Denu", "Contact": 12345678, "DateandTime": 20200207220360}

print(eq(d1, d2))

这将打印True

首先,您可以轻松地使用DICT创建相同的函数。不要将其转换为字符串,因为它已经是可用对象

Str1 = {"Name":"Denu","Contact":12345678, "DateandTime":20200207202019}
Str2 = {"Name":"Denu", "Contact":12345678, "DateandTime":20200207220360}

def isidentical(dct1, dct2):
    """ Compares two dicts for equality """

    ignore = ["DateandTime"]

    keys1 = set(key for key in dct1 if not key in ignore)
    keys2 = set(key for key in dct2 if not key in ignore)

    if keys1 != keys2:
        return False

    for key in keys1:
        if dct1[key] != dct2[key]:
            return False
    return True

x = isidentical(Str1, Str2)
print(x)
# True in this case

如果一个字典的键与另一个不同,或者值不相同,则会引发错误。显然,您可以扩展ignore列表

相关问题 更多 >