如何使用python difflib将json对象与多个字段进行比较

如何使用python difflib将json对象与多个字段进行比较,python,python-3.x,difflib,Python,Python 3.x,Difflib,理想的结果是JSON对象看起来与下面的示例类似。从那里,difflib将处理DataToCompare name和address到DataSetAgainst name和address,并给出与JSON out示例类似的差异 JSON格式: { "DataToCompare": [ { "name": "Alex Young", "address": "123 Main Street" } ], "DataSetAgainst": [

理想的结果是JSON对象看起来与下面的示例类似。从那里,difflib将处理DataToCompare name和address到DataSetAgainst name和address,并给出与JSON out示例类似的差异

JSON格式:

{
  "DataToCompare": [
    {
        "name": "Alex Young",
        "address": "123 Main Street"
    }
  ],
  "DataSetAgainst": [
    {
        "name": "Bob Doll",
        "address": "555 South Street"
    },
    {
        "name": "Bob Young",
        "adress": "123 Main St."
    }
  ]
}
JSON输出:

[
    {
        "name": "Bob Doll",
        "Name Match": 11.8,
        "address": "555 South Street",
        "address match": <some number>
    },
    {
        "name": "Bob Young",
        "Name Match": 55.6,
        "address": "123 Main St.",
        "address match": <some number>
    }
]
Basic将您的差异部分放入函数中,例如
diff(key):
和do
用于输入['name','address']:;差异=差异(键)
。顺便说一句:你在比较123大街、555南街,第二个是用
清理的。isalnum()
第一个不是!
data_to_compare = dataIncoming["DataToCompare"][0]
mt_name = data_to_compare['name']

dataList = []
for i in dataIncoming["DataSetAgainst"]:
    dataList.append(i["name"])

dataResults = []

for i in dataList:
    dataBack = {}
    clean_name = ''.join(e for e in i if e.isalnum())
    sequence = difflib.SequenceMatcher(isjunk=None, a=mt_name, b=clean_name)
    difference = sequence.ratio()*100
    difference = round(difference, 1)

    dataBack["name"] = i
    dataBack["Name Match"] = difference

    dataResults.append(dataBack)

return json.dumps(dataResults)