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

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

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

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

谢谢!

【问题讨论】:

标签: python regex json


【解决方案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,那么要么一切都已为您处理好,要么数据源已损坏。
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多