如何使用 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”)改变