python的json:AttributeError:'str'对象没有属性'keys'

use*_*654 3 python json dictionary python-3.x

我正在尝试加载格式化为字典的字符串(实际程序从文件中读取这一行,它是一个非常大的文件,我无法手动修改)。

我需要将字符串行转换为 json 对象,以便我可以检查特定键的值,例如myJson[Date].

这是脚本:

import json

mystring = "{'Date': 'Fri, 19 Apr 2019 03:58:04 GMT', 'Server': 'Apache/2.4.39', 'Accept-Ranges': 'bytes'}"


mystring = json.dumps(mystring)
myJson = json.loads(mystring)

print(str(myJson.keys()))
print(str(myJson))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

AttributeError: 'str' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)

我怀疑mystring格式不符合,单引号应该是双引号?鉴于我有大量数据,我不能简单地使用简单的搜索/替换将单冒号替换为双冒号,因为单冒号可能包含在我不应修改的值中。如果这是问题的原因,有没有办法只替换键/值对的冒号而不触及值中的冒号?我希望这不是问题。

raz*_*zdi 6

而不是处理单引号字符串并努力将其转换为 json,只需使用ast包将其转换为有效的 dict。

import ast

mystring = "{'Date': 'Fri, 19 Apr 2019 03:58:04 GMT', 'Server': 'Apache/2.4.39', 'Accept-Ranges': 'bytes'}"

my_dict = ast.literal_eval(mystring)
Run Code Online (Sandbox Code Playgroud)

结果是:

> print(my_dict["Date"])
Fri, 19 Apr 2019 03:58:04 GMT

Run Code Online (Sandbox Code Playgroud)