如何在Python中处理JSON文件中的正则表达式字符串
我想把一些正则表达式的字符串存储在一个json文件里,然后用Python来解析这个json文件。不过,正则表达式中的反斜杠在json中会被当作无效的字符。那么我该怎么做呢?
{
"key" : "^https://www\.google\.com/search?.+",
"value" : "google"
}
如上所示,正则表达式中有些句点(?.+)会被当作正则表达式,而有些句点(.)则只是普通的句点。不过,这个json文件会被认为是无效的。那么我该怎么做呢?
谢谢!
3 个回答
1
在生成JSON字符串时,你需要对反斜杠进行转义。无论你使用什么工具来生成JSON,通常这些工具都会自动处理这个问题。比如,使用Python的json模块:
>>> print json.dumps({'asdf': r'\s+'})
{"asdf": "\\s+"}
注意,输出中有两个反斜杠。当解析时,这两个反斜杠会变成一个反斜杠。
3
你需要对正则表达式中的反斜杠进行转义,然后再对字符串处理器中的反斜杠进行转义:
>>> s = """{
... "key" : "^https://www\\\\.google\\\\.com/search?.+",
... "value" : "google"
... }"""
>>> json.loads(s)
{'key': '^https://www\\.google\\.com/search?.+', 'value': 'google'}
如果你是反向操作,也就是从一个包含正则表达式字符串的Python字典转换到一个JSON对象,编码器会为你处理这些问题,但通常来说,使用原始字符串来写正则表达式是个好主意:
>>> s = """{
... "key" : "^https://www\.google\.com/search?.+",
... "value" : "google"
... }"""
>>> json.dumps(s)
'"{\\n \\"key\\" : \\"^https://www\\\\.google\\\\.com/search?.+\\",\\n \\"value\\" : \\"google\\"\\n}"'
1
每个反斜杠都要再加一个反斜杠。
str=str.replace("\", "\\");
在使用json之前,把上面的代码加到你的代码里去!
{
"key": "^https://www\\.google\\.com/search?.+",
"value": "google"
}
这样是有效的!
希望这对你有帮助!