【发布时间】:2023-02-10 01:07:25
【问题描述】:
我得到以下 json 变量(字符串):
var = somefunct()
print(var)
'{"data":{"threaded_conversation_with_injections_v2":{"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","user_id_str":"44196397"}}}'
当我尝试加载它时
json.loads(var)
我得到:json.decoder.JSONDecodeError: Expecting value:
但是,当我做那样的事情时手动:
new_var = r"""{"data":{"threaded_conversation_with_injections_v2":{"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","user_id_str":"44196397"}}}"""
json.loads(new_var)
{'data': {'threaded_conversation_with_injections_v2': {'source': '<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>', 'user_id_str': '44196397'}}}
有用。 简单地说,它看起来像这样
a = """{"data":{"threaded_conversation_with_injections_v2":{"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","user_id_str":"44196397"}}}"""
b = r"""{"data":{"threaded_conversation_with_injections_v2":{"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>","user_id_str":"44196397"}}}"""
json.loads(a) - ERROR
json.loads(b) - WORKS
当我有一些变量时,我该如何解决?
对于 json.loads 方法,如何将“var”变量中的内容设置为 r“content”?
UPD:在浪费了很多时间之后,我发现不可能获得我在示例中指示的字符串数据。感谢您的回答。问题已解决。
【问题讨论】:
-
我认为
print(var)显示您在var中的值被包裹在额外级别的字符串引号中......否则它不会在'...'之间输出 -
@Anentropic 当然,我非常理解这一点。问题是如何将相似的字符串转换为字典
-
此外,它仅适用于变量
b,因为您没有注意反斜杠键。如果你写“”“\”“”,python解释器不会理解你的意思。但是你写"""\\""",它会理解这是一个字符串。当写 r"""\""" 时,python 理解你实际上是指双斜杠。 -
所以你应该把它放在变量
a: """{"data":{"threaded_conversation_with_injections_v2":{"source":"<a href=\\"twitter.com/download/iphone\\" rel=\\"nofollow\ \">iPhone 版 Twitter</a>","user_id_str":"44196397"}}}""" -
您是生成从
somefunct返回的var值的人吗?你最好的选择是首先获得有效的 JSON 数据,而不是被错误转义并用额外引号包裹的东西困住