如何通过 python 或正则表达式忽略两个索引来比较两个字符串

How to compare two strings by ignoring between two indexes via python or regex

语言: Python 3.

我很想知道如何通过忽略对象 "DateandTime" 的值来比较以下字符串,因为它永远不会相同。因此,在比较过程中单独忽略这一点。

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

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

如有任何帮助,我们将不胜感激。

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

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 列表。

您可以检查 all 个键 除了 您不关心的键是否相等:

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.