我需要将下面的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中对正则表达式进行编码并像编码一样对其进行编码(以原始正则表达式形式)?
答案 0 :(得分:3)
python中的原始字符串格式化和“普通字符串格式化”不会改变字符串的存储方式,而只会改变输入字符串的方式。所以以下字符串都是相同的:
"\\a" == r"\a"
Python向您显示反斜杠转义,但如果您尝试使用正则表达式,您将看到它与您想要匹配的匹配。
>>> bool(re.match("^ip address 192\\.168\\.0", "ip address 192.168.0"))
True