DeepDiff exclude_path正则表达式未筛选出路径



我有两个字典想使用DeepDiff进行比较,不包括"items"列表中的"a"键:

d1 = {"items": [{"a": 1, "b": 2}, {"a": 1, "b": 2}]}
d2 = {"items": [{"a": 10, "b": 2}, {"a": 100, "b": 2}]}
exclude_paths = [r"root['items'][d+]['a']"]
diff = DeepDiff(d1, d2, exclude_paths=exclude_paths)
pprint(diff)

理想情况下,DeepDiff应该报告一个空字典,但它报告的是"a"值。

{'values_changed': {"root['items'][0]['a']": {'new_value': 10, 'old_value': 1},
"root['items'][1]['a']": {'new_value': 100,
'old_value': 1}}}

我在exlude_paths正则表达式中是否做错了什么?我在看医生。

我尝试过exlude_paths的其他值,但没有成功:

r"root['items'][d+]['a']"
r"root['items'][d]['a']"

只需要使用exclude_regex_paths参数而不是exclude_paths参数:

d1 = {"items": [{"a": 1, "b": 2}, {"a": 1, "b": 2}]}
d2 = {"items": [{"a": 10, "b": 2}, {"a": 100, "b": 2}]}
diff = DeepDiff(d1, d2, exclude_regex_paths=[r"root['items'][d+]['a']"])
pprint(diff)  # {}

相关内容

  • 没有找到相关文章

最新更新