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

Posted

技术标签:

【中文标题】如何使用 Python 处理 JSON 文件中的正则表达式字符串【英文标题】:How to handle regex string in JSON file with Python 【发布时间】:2014-04-25 05:24:13 【问题描述】:

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


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

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

谢谢!

【问题讨论】:

转义你的角色见:***.com/questions/280435/… 【参考方案1】:

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

        str=str.replace("\", "\\");

在json使用前将上述代码添加到代码中..!

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

它是有效的..!

希望对您有所帮助...!

【讨论】:

感谢 Sidharthan,我认为您的解决方案很干净,我不需要使用 replace(),只需在文件中使用 \\ 而不是 \。【参考方案2】:

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

>>> 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"'

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

@Jerry:如果您正在从文件中读取 JSON,那么要么一切都已为您处理好,要么数据源已损坏。

以上是关于如何使用 Python 处理 JSON 文件中的正则表达式字符串的主要内容,如果未能解决你的问题,请参考以下文章

最后一个参数中的正斜杠导致批处理文件目录的路径(“%~dp0”)改变

json数据处理:读取文件中的json字符串,转为python字典

python中json处理

如何在scrapy框架下用python爬取json文件

python3,如何对比2个结构一样的json?

如何使用 python 更新嵌套 JSON 文件中的值?