python - python-将其中包含“和\”的返回字符串转换为dict
问题描述
我得到了一个返回的字符串值
returned_string = '{"url":"src=\"http:the_url\""}'
我想将它转换为字典类型。当我尝试 eval() 时,出现以下错误:
文件“”,第 1 行 {"url":"src="http:the_url""} ^ SyntaxError: invalid syntax
当我尝试 json.loads() 时,出现以下错误:
json.decoder.JSONDecodeError:期望','分隔符:第 1 行第 14 列(字符 13)
我知道字符串是否是这样的:
returned_string = r'{"url":"src=\"http:the_url\""}'
然后 eval() 和 json.loads() 工作。但正如值名称所表明的那样,它是一个由某个 function() 返回的字符串,所以我不能将它转换为 r'..' 或者我只是不知道如何。所以,如果有人知道如何将returned_string 转换为字典,那将非常有帮助。谢谢。
解决方案
@Lunam,让你先看看下面在交互式终端上执行的代码。
>>> returned_string = '{"url":"src=\"http:the_url\""}'
>>> returned_string2 = '{"url":"src=\'http:the_url\'"}'
>>>
>>> json.loads(returned_string)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\rishi\Anaconda2\lib\json\__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "C:\Users\rishi\Anaconda2\lib\json\decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\rishi\Anaconda2\lib\json\decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 14 (char 13)
>>>
>>> json.loads(returned_string2)
{u'url': u"src='http:the_url'"}
>>>
>>> eval(returned_string)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
{"url":"src="http:the_url""}
^
SyntaxError: invalid syntax
>>>
>>> eval(returned_string2)
{'url': "src='http:the_url'"}
>>>
现在,手动/实用地修改您的字符串,如下所示,即用于"""
包围您的字符串,删除\
,'
在内部使用"
并尝试。
如果它不能满足您的问题,请告诉我。
import json
# returned_string = '{"url":"src=\"http:the_url\""}'
returned_string = """{"url":"src='http:the_url'"}"""
print(json.loads(returned_string))
print(eval(returned_string))
输出
{'url': "src='http:the_url'"}
{'url': "src='http:the_url'"}
推荐阅读
- php - 为什么 PHP try...catch (Exception) 不能捕获 Yii2 应用程序中 inconv() 引发的异常?
- c# - 如何将我自己的内容添加到我的 umbraco 页面?
- javascript - 视频轨道没有来自 Navigator.mediaDevices.getSupportedConstraints() 的功能
- jquery - Bootstrap - 无法读取未定义的属性“fn”
- java - Citrus 框架:接收超时时不失败测试
- unity3d - VUFORIA 构建对 Unity 的支持
- android - 如果应用程序从未通过 Play 商店发布,是否需要 android 64 位应用程序版本
- google-apps-script - Google Apps 脚本子字符串
- c++ - 尝试在交叉编译中链接库时出现编译错误
- bioinformatics - 使用snakemake远程前缀时指定源文件