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

如何用Python处理JSON文件中的正则表达式字符串,python,regex,json,Python,Regex,Json,我想在json文件中存储一些正则表达式字符串,然后使用python解析json文件。但是,由于正则表达式反斜杠在json中将被视为无效。那我该怎么办呢 { "key" : "^https://www\.google\.com/search?.+", "value" : "google" } 正如您在上面看到的,作为正则表达式,一些fullstop(?.+)将是regex,一些将只是fullstop(.),但是,这个json文件将被认为是无效的。那我该怎么办呢 谢谢 您需要对正则

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

{
    "key" : "^https://www\.google\.com/search?.+",
    "value" : "google"
}
正如您在上面看到的,作为正则表达式,一些fullstop(?.+)将是regex,一些将只是fullstop(.),但是,这个json文件将被认为是无效的。那我该怎么办呢


谢谢

您需要对正则表达式使用反斜杠转义,然后对字符串处理器再次使用反斜杠转义:

>>> s = """{
...     "key" : "^https://www\\\\.google\\\\.com/search?.+",
...     "value" : "google"
... }"""
>>> json.loads(s)
{'key': '^https://www\\.google\\.com/search?.+', 'value': 'google'}
如果你要走另一条路,我。E从包含正则表达式字符串的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}"'

生成JSON字符串时,需要转义反斜杠。无论您使用什么工具来生成JSON,都可能内置了这个工具。例如,对于Python json模块:

>>> print json.dumps({'asdf': r'\s+'})
{"asdf": "\\s+"}

请注意,输出中有两个反斜杠。解析后,这些将成为一个反斜杠。

为每个反斜杠再添加一个反斜杠

        str=str.replace("\", "\\");
在使用json之前将上述代码添加到代码中

       {
          "key": "^https://www\\.google\\.com/search?.+",
          "value": "google"
       }
它是有效的


希望它能帮助

转义字符请参见:@Jerry:如果您正在从文件中读取JSON,则可能是所有内容都已为您处理,或者数据源已损坏。感谢Sidharthan,我认为您的解决方案是干净的,我不需要使用replace(),只需在文件中使用\\而不是\即可。