如何通过 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
.
语言: 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
.