我需要将下面的 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/