如何使用Python处理JSON文件中的正则表达式字符串

时间:2014-03-19 06:20:56

标签: python regex json

我想在json文件中存储一些正则表达式字符串,然后使用python来解析json文件。但是,因为正则表达式反斜杠在json中将被视为无效。那我该怎么办

{
    "key" : "^https://www\.google\.com/search?.+",
    "value" : "google"
}

正如你在上面看到的那样,作为正则表达式,一些fullstop(?。+)将是正则表达式,一些将只是fullstop(。),但是,这个json文件将不被认为是有效的。那我该怎么办

谢谢!

3 个答案:

答案 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"
       }

有效的一个..!

它帮助......!