mic*_*ele 1400 python parsing json
我在文件中有这个JSON:
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [
"id": "valore"
],
"om_points": "value",
"parameters": [
"id": "valore"
]
}
Run Code Online (Sandbox Code Playgroud)
我写了这个脚本打印所有的json文本:
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
Run Code Online (Sandbox Code Playgroud)
如何解析文件并提取单个值?
Jus*_*eel 2094
我认为Ignacio所说的是你的JSON文件不正确.你什么[]
时候应该有{}
.[]
用于列表,list
用于词典.
以下是您的JSON文件的外观,您的JSON文件甚至不会为我加载:
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": {
"id": "valore"
},
"om_points": "value",
"parameters": {
"id": "valore"
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用你的代码:
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
Run Code Online (Sandbox Code Playgroud)
使用数据,您现在还可以找到如下值:
data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]
Run Code Online (Sandbox Code Playgroud)
尝试一下,看看它是否有意义.
Ben*_*ngt 305
你data.json
应该看起来像这样:
{
"maps":[
{"id":"blabla","iscategorical":"0"},
{"id":"blabla","iscategorical":"0"}
],
"masks":
{"id":"valore"},
"om_points":"value",
"parameters":
{"id":"valore"}
}
Run Code Online (Sandbox Code Playgroud)
你的代码应该是:
import json
from pprint import pprint
with open('data.json') as data_file:
data = json.load(data_file)
pprint(data)
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于Python 2.6及更高版本,因为它取决于with
-statement.在Python 2.5中使用from __future__ import with_statement
,在Python <= 2.4中,请参阅Justin Peel的答案,该答案基于此答案.
您现在还可以访问单个值,如下所示:
data["maps"][0]["id"] # will return 'blabla'
data["masks"]["id"] # will return 'valore'
data["om_points"] # will return 'value'
Run Code Online (Sandbox Code Playgroud)
Gen*_*wen 66
Justin Peel的回答非常有用,但是如果你使用Python 3阅读JSON应该这样做:
with open('data.json', encoding='utf-8') as data_file:
data = json.loads(data_file.read())
Run Code Online (Sandbox Code Playgroud)
注意:使用json.loads
而不是json.load
.在Python 3中,json.loads
采用字符串参数.json.load
采用类似文件的对象参数.data_file.read()
返回一个字符串对象.
smb*_*aei 52
data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
for line in f:
data.append(json.loads(line))
Run Code Online (Sandbox Code Playgroud)
moe*_*dol 12
"Ultra JSON"或简单地"ujson"可以处理[]
您的JSON文件输入.如果您正在将JSON输入文件作为JSON元素列表读入程序中; 例如,[{[{}]}, {}, [], etc...]
ujson可以处理任何字典列表,列表字典的任意顺序.
您可以在Python包索引中找到ujson,并且API几乎与Python的内置json
库相同.
如果你加载更大的JSON文件,ujson也会快得多.与提供的同一链接中的其他Python JSON库相比,您可以查看性能详细信息.
如果您在python 3中,那么您将如何做到这一点
{
"connection1": {
"DSN": "con1",
"UID": "abc",
"PWD": "1234",
"connection_string_python":"test1"
}
,
"connection2": {
"DSN": "con2",
"UID": "def",
"PWD": "1234"
}
}
Run Code Online (Sandbox Code Playgroud)
代码应该看起来像假设connection.json文件如上所示
connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>> test1
Run Code Online (Sandbox Code Playgroud)
这种解析有两种类型。
从文件中,您可以使用以下内容
import json
json = json.loads(open('/path/to/file.json').read())
value = json['key']
print(json['value'])
Run Code Online (Sandbox Code Playgroud)
这篇文章解释了使用两种场景的完整解析和获取值。使用 Python 解析 JSON
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [{
"id": "valore"
}],
"om_points": "value",
"parameters": [{
"id": "valore"
}]
}
Run Code Online (Sandbox Code Playgroud)