【发布时间】:2022-01-13 17:28:34
【问题描述】:
我只使用过键值对,其中
{a:"b", d:"c"} 只有 2 个值。如果我有一个类似这样的文件
{
"personalInformationDeltaEmployee": {
"employeeID": "0",
"actualSSN": null
},
"appointmentDeltaEmployee": {
"cyberSecurityCode3": "0",
"POID": "0"
}
}
我们假设这个文件是一个txt文件。我如何将这样的东西转换成字典?
这是我尝试过的:
try:
with open(filename) as f:
line_dict = {}
for part in filename:
key, value = part.split(":")
line_dict[key] = value
except Exception as e:
print e
我需要超过 1 个值才能解压。我猜它对额外的支架很生气,对吧?解决此问题的最佳方法是什么?我可以考虑哪些选择?
【问题讨论】:
-
除非遵循某种格式,否则您无法解析某些内容。您显示的数据是 JSON,因此您只需要
json.load(open("filename"))。在您的代码中,for part in filename:肯定不是您想要的 - 部分只是文件名的字母。一般来说,最好了解您尝试解析的内容的格式并尽可能使用现有的解析器。 -
如果我使用 json.load 我最终会得到带有“u”字符的字符串,并且顺序看起来与原始文件不同。是这里使用 for 循环摆脱任何适合 (u') 的最佳解决方案
-
您需要使用 2.x 吗?它被贬低了很长时间。这些是
unicode字符(在 python 3 中,str是 unicode 并且unicode已被弃用)并且与常规字符串的工作方式大致相同。 -
不幸的是,它必须在 Python 2.7 中,但感谢您的澄清
-
像
u"employeeID"这样的unicode字符串前面并没有真正的“u”。它的 python 告诉你它的 unicode 的方式。它可能在您的应用程序中工作得很好。如果没有,您可以使用 json 解析,然后查看结果并通过解码将所有内容转换为str。
标签: python python-2.7