Python--deepdiff库使用
PYPI官网解释链接:deepdiff · PyPI
# 安装:pip3 install deepdiff
组成模块
- DeepDiff:比较字典、可迭代对象、字符串和其他对象的深度差异
- DeepSearch:查找对象中的对象
- DeepHash:基于内容对任何对象进行哈希处理
- Delta:存储对象之间的差异,并将其应用于其他对象
- Extract:通过路径来获取一个嵌套python对象的值
- Commandline:可以在命令行使用DeepDiff
用处:可高效对比 JSON 格式的文本
如果比较的两个对象结果完全一致,则返回空字典;否则返回有差异的字段
#首先导入库
from deepdiff import DeepDiff
#示例:比较两个json文本的差异
from deepdiff import DeepDiff
json1={
'code': 0,
"message": "success",
"data": {
"total": 28,
"id":123
}
}
json2={
'code': "0",
"message":"success",
"data": {
"total": 29,
}
}
print(DeepDiff(json1,json2))
#运行结果
{'type_changes': {"root['code']": {'old_type': <class 'int'>, 'new_type': <class 'str'>, 'old_value': 0, 'new_value': '0'}}, 'dictionary_item_removed': [root['data']['id']], 'values_changed': {"root['data']['total']": {'new_value': 29, 'old_value': 28}}}
#返回结果解释:
1. type_changes:类型改变
2. values_changed:值改变
3. dictionary_item_added:字典key增加
4. dictionary_item_removed:字典key删除
高级用法
- 忽略排序:
ignore_order
- 忽略大小写:
ignore_string_case
- 忽略某些类型:
exclude_types
- 指定比较方式:
verbose_level=2
(采用深度优先算法进行比较) - 自定义比较方法:继承
deepdiff.DeepSearch
类,并重写其visit
方法 - 用树状图展示:
view='tree'