我的应用程序收到一个在其 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 个斜杠和一个斜杠的那个。
由于数据是正则表达式,我希望它在变量中以原始格式出现。
我怎样才能得到它?
这里的问题是您的 json 未正确编码,因此您在解码它时遇到问题。 这是一个先有鸡还是先有蛋的问题。
>>> import json
>>> r = r'^1.0(.d+)?$'
>>> print r
^1.0(.d+)?$
>>> print json.dumps(r)
"^1\.0(\.\d+)?$"
在将 json 传递给您之前,您需要调查它的创建方式(如果您在那里控制(,或者联系生成它的人。