断言与正则表达式

时间:2016-01-22 04:07:34

标签: python regex dictionary

它可能用正则表达式断言?

示例:dict

{
    "mimetype": "application/json",
    "status_code": 200,
    "data": {
      "id": 1,
      "username": "foo",
      "access_token": "5151818748748"
  }
}

with:key access_token

中的正则表达式
{
    "mimetype": "application/json",
    "status_code": 200,
    "data": {
      "id": 1,
      "username": "foo",
      "access_token": "(.+)"
  }
}

1 个答案:

答案 0 :(得分:1)

假设我理解正确:

import re

def assert_dict(template, thing):
    if len(template) != len(thing):
        raise AssertionError("Assertion failed")
    for key in template:
        if isinstance(template[key], dict):
            assert_dict(template[key], thing[key])
        else:
            if template[key] == thing[key]:
                continue
            elif re.fullmatch(template[key], thing[key]):
                continue
            else:
                raise AssertionError("Assertion failed")

检查它们是否具有相同的键值对,如果是,则首先测试它们是否相同,如果不相同,则检查第二个是否与第一个匹配。

只要词典中没有什么花哨的东西,这就可以了。列表将起作用,但不会在列表中使用,尽管实现它也是相当简单的。