我有一个JSON文件,其中包含一些我需要的数据。我想写一个python程序来读取它并获取信息。有什么帮助吗?
下面是JSON的一个示例
var case_data = {
"cases": {
"1": {
"amount": 1500.0,
"case_id": "1",
"case_name": "US v. Control Systems Specialist, Inc. and Darrold Richard Crites",
"country": "br",
"sector": "sector-defense"
},
"10": {
"amount": 0.0,
"case_id": "10",
"case_name": "SEC v. Int'l Systems & Controls Corp.",
"country": "cl",
"sector": "sector-agriculture"
}
},
"countries": {
"ae": {
"cases": [
"191",
"192",
"193",
"282",
"332"
],
"sectors": {
"sector-consulting": {
"total": 1812113.33
},
"sector-energy": {
"total": 6622147.0
},
"sector-infrastructure": {
"total": 4694551.0
}
},
"total": 13128811.33,
"tree": {
"children": [
{
"children": [],
"classname": "sector-energy",
"data": {
"$amount": 4550000.0,
"$area": 3
},
"id": "191",
"name": "Control Components Inc. et al."
},
{
"children": [],
"classname": "sector-infrastructure",
"data": {
"$amount": 140551.0,
"$area": 2
},
"id": "192",
"name": "Textron Inc."
},
{
"children": [],
"classname": "sector-infrastructure",
"data": {
"$amount": 4554000.0,
"$area": 3
},
"id": "193",
"name": "York International Corp."
},
{
"children": [],
"classname": "sector-consulting",
"data": {
"$amount": 1812113.33,
"$area": 3
},
"id": "282",
"name": "Aon Corporation"
},
{
"children": [],
"classname": "sector-energy",
"data": {
"$amount": 2072147.0,
"$area": 3
},
"id": "332",
"name": "Tyco Int\u2019l Ltd. et al."
}
],
"data": {
"$amount": 0,
"$area": 14
},
"id": "ae",
"name": "UAE"
}
},
"ao": {
"cases": [
"5",
"9",
"207",
"208",
"209"
],
"sectors": {
"sector-consulting": {
"total": 12350000.0
},
"sector-energy": {
"total": 18097043.0
},
"sector-telecom": {
"total": 7080000.0
}
},
"total": 37527043.0,
"tree": {
"children": [
{
"children": [],
"classname": "sector-energy",
"data": {
"$amount": 302043.0,
"$area": 2
},
"id": "5",
"name": "ABB Ltd. et al."
},
{
"children": [],
"classname": "sector-energy",
"data": {
"$amount": 16335000.0,
"$area": 6
},
"id": "9",
"name": "Baker Hughes Inc. et al."
},
{
"children": [],
"classname": "sector-energy",
"data": {
"$amount": 1460000.0,
"$area": 3
},
"id": "207",
"name": "GlobalSanteFe Corp."
},
{
"children": [],
"classname": "sector-telecom",
"data": {
"$amount": 7080000.0,
"$area": 3
},
"id": "208",
"name": "Alcatel-Lucent S.A. et al."
},
{
"children": [],
"classname": "sector-consulting",
"data": {
"$amount": 12350000.0,
"$area": 6
},
"id": "209",
"name": "Panalpina World Transport (Holding) Ltd. et al."
}
],
"data": {
"$amount": 0,
"$area": 20
},
"id": "ao",
"name": "Angola"
}
},
};我想提取每个国家“部门-能源”后面的数字。请注意,在此示例文件中,有两个国家/地区'ae‘和'ao’。
发布于 2013-12-10 07:17:00
如果你真的有JSON。您所能做的就是使用json模块将其解码为本机dict,就像使用JavaScript中的JSON对象将其解码为本机object一样。比较这个JS:
var case_data = JSON.parse(data);…等效于Python:
case_data = json.loads(data)完成此操作后,就不再需要担心JSON了;它只是普通的本机对象,您可以像访问字典、列表、字符串和数字的任何其他组合一样访问这些对象。例如:
sector_energy = [country["sectors"]["sector-energy"]
for country in case_data["countries"]]但是,您向我们展示的根本不是JSON;它是JavaScript源代码,它将一个复杂的对象赋给一个变量。您不能在任何语言中将其解析为JSON,因为它不是。
当然,=和;之间的源代码部分不仅是有效的JavaScript代码,也是有效的JSON。就此而言,它也是有效的Python和有效的Ruby。但是,如果您想要解析这个文件和其他类似的文件,则需要制定规则,以确定哪些片段代表您想要解析的JSON。每个文件是否只有一个JS变量赋值?或者是其他的东西?
无论如何,实际上使用JSON进行语言之间的交换要好得多,而不是使用某种类似JSON的东西并希望它能正常工作。
发布于 2013-12-10 06:54:39
Python已经为此提供了一个库
http://docs.python.org/3.3/library/json.html
https://stackoverflow.com/questions/20482546
复制相似问题