python - 无法将 JSON 文件中的正则表达式作为 Python 中的字符串读取

标签 python json regex

我需要将下面的 JSON 文件读入 Python 并保持正则表达式不变。我将在程序中使用正则表达式。

{
    "Title": "Sample Compliance Check",
    "Checks": {
        "6": {
            "+": ["^interfa.*", "^ip address 192\.168\.0"],
            "description": "All interfaces with IP Address 192.168.0",
            "action": "aaa new-model"
        }
    }
}

当我尝试使用 json 模块读取此文件时,出现无效 json 错误。

json.decoder.JSONDecodeError: Invalid \escape: 

我尝试将反斜杠转换为双反斜杠

{
    "Title": "Sample Compliance Check",
    "Checks": {
        "6": {
            "+": ["^interfa.*", "^ip address 192\\.168\\.0"],
            "description": "All interfaces with IP Address 192.168.0",
            "action": "aaa new-model"
        }
    }
}

现在,它可以用 Python 读取,但我得到了带有双反斜杠的相同输出。

有没有办法在 JSON 中对正则表达式进行编码并像编码一样读取它(以原始正则表达式形式)?

最佳答案

Python 中的原始字符串格式化和“普通字符串格式化”不会改变字符串的存储方式,只会改变输入字符串的方式。所以下面的字符串都是相等的:

"\\a" == r"\a"

Python 显示反斜杠已转义,但如果您尝试正则表达式,您会发现它匹配您想要匹配的内容。

>>> bool(re.match("^ip address 192\\.168\\.0", "ip address 192.168.0"))
True

关于python - 无法将 JSON 文件中的正则表达式作为 Python 中的字符串读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38200642/

相关文章:

python 在 django 下找不到库,否则会找到

python - scipy space 获取距 3D 点和 3D 点数组的距离

android - 数组适配器 : Json data to be sent to spinner

regex - 用于匹配字符串的特定子字符串的正则表达式

python - 在 Django 模板中实现当前月份的简单方法?

python - 使用 urllib2 时出现 "TypeError: a float is required"

javascript - 在 Javascript 文件中发送 JSON HTTP Get 请求

javascript - 如何通过php和ajax将html添加到返回的json对象

java - 正则表达式禁止文件名中出现字符

regex - 具体来说,RewriteCond %{QUERY_STRING}