无法在JSON文件中将正则表达式作为Python中的字符串

时间:2016-07-05 10:07:44

标签: 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中对正则表达式进行编码并像编码一样对其进行编码(以原始正则表达式形式)?

1 个答案:

答案 0 :(得分:3)

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

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

Python向您显示反斜杠转义,但如果您尝试使用正则表达式,您将看到它与您想要匹配的匹配。

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