我想在json文件中存储一些正则表达式字符串,然后使用python来解析json文件。但是,因为正则表达式反斜杠在json中将被视为无效。那我该怎么办
{
"key" : "^https://www\.google\.com/search?.+",
"value" : "google"
}
正如你在上面看到的那样,作为正则表达式,一些fullstop(?。+)将是正则表达式,一些将只是fullstop(。),但是,这个json文件将不被认为是有效的。那我该怎么办
谢谢!
答案 0 :(得分:2)
你需要使用转义正则表达式的反斜杠,然后再次为字符串处理器转义它们:
>>> 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 :(得分:1)
生成JSON字符串时需要转义反斜杠。无论您使用什么工具生成JSON都可能内置了。例如,使用Python json模块:
>>> print json.dumps({'asdf': r'\s+'})
{"asdf": "\\s+"}
请注意,输出中有两个反斜杠。解析后,这些将成为一个反斜杠。
答案 2 :(得分:1)
为每个反斜杠添加一个反斜杠。
str=str.replace("\", "\\");
在json使用之前将上面的代码添加到代码中。!
{
"key": "^https://www\\.google\\.com/search?.+",
"value": "google"
}
有效的一个..!
它帮助......!