在python中如何在不破坏JSON结构的情况下解析具有值正则表达式的JSON字符串和斜杠(\)?

时间:2017-11-14 04:24:52

标签: python json

我的应用程序以其JSON值获取带有正则表达式的请求。

{ "regex" : "^1\.0(\.\\d+)?$" }

我使用下面的代码来解析它:

parsedData = json.loads(requestData)

但由于非JSON字符,它失败了。

我尝试了很多方法,其中一个就是这个

Bease64编码和解码:

>>> s = '^1\.0(\.\\d+)?$'
>>> e = base64.b64encode('^1\.0(\.\d+)?$')
>>> e
'XjFcLjAoXC5cZCspPyQ='
>>> d = base64.b64decode(e)
>>> d
'^1\\.0(\\.\\d+)?$'

观察输出 - '^1\\.0(\\.\\d+)?$':添加了1个额外的斜杠。

显然现在无法区分具有2个斜杠和一个斜杠的那个。

由于数据是正则表达式,我希望它以原始格式存在于变量中。

我怎么能得到它?

1 个答案:

答案 0 :(得分:1)

这里的问题是你的json没有正确编码,所以你在解码它时遇到了麻烦。这是一只鸡肉和鸡肉。鸡蛋问题。

>>> import json
>>> r = r'^1\.0(\.\d+)?$'
>>> print r
^1\.0(\.\d+)?$
>>> print json.dumps(r)
"^1\\.0(\\.\\d+)?$"

您需要调查json在传递给您之前是如何创建的(如果您在那里控制)或者与生成json的人联系。