DeepDiff exclude_paths 正则表达式未过滤掉路径
DeepDiff exclude_paths regex not filtering out paths
我有两个词典想使用 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
正则表达式有什么问题吗?我正在关注 docs.
我尝试了 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) # {}
我有两个词典想使用 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
正则表达式有什么问题吗?我正在关注 docs.
我尝试了 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) # {}