【发布时间】:2019-09-30 22:59:29
【问题描述】:
我正在尝试加载格式化为字典的字符串(实际程序从文件中读取这一行,这是一个非常大的文件,我无法手动修改)。
我需要将字符串行转换为 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))
我收到此错误:
AttributeError: 'str' object has no attribute 'keys'
我怀疑mystring 格式不符合要求,单引号应该是双引号?鉴于我有大量数据,我不能简单地使用简单的搜索/替换将单冒号替换为双冒号,因为单冒号可能包含在我不应该修改的值中。如果这是问题的原因,有没有办法只替换键/值对的冒号而不触及值中的冒号?我希望这不是问题。
【问题讨论】:
-
这条线是干什么用的:
mystring = json.dumps(mystring)?此外,您的字符串不是有效的 JSON(单引号而不是双引号)。 -
mystring是从哪里来的?看起来您使用了一个非常好的字典并将其转换为字符串。正确的做法很可能不是添加更多的处理步骤,而是删除更早的错误步骤。 -
如果你真的被这个字符串卡住了,你可能不得不使用像
ast.literal_eval这样的东西或者一个允许的JSON解析器。json.dumps绝对不会成为正确解决方案的一部分。 -
mystring不是有效的 JSON 开头 - 它需要双引号才能成为 json。 -
您将 Python
str对象序列化为 JSON 字符串对象。所以当你反序列化它时,它将是一个字符串。正如其他人所指出的那样,您的字符串实际上并不包含有效的 JSON,但无论如何,您几乎肯定不是首先要json.dumps(mystring)。 这没有任何意义.
标签: python json python-3.x dictionary