파일 에이 JSON이 있습니다.
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [
"id": "valore"
],
"om_points": "value",
"parameters": [
"id": "valore"
]
}
이 스크립트를 작성하여 모든 JSON 데이터를 인쇄했습니다.
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
이 프로그램은 다음과 같은 예외를 발생시킵니다.
Traceback (most recent call last):
File "<pyshell#1>", line 5, in <module>
data = json.load(f)
File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.5/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 13 column 13 (char 213)
JSON을 구문 분석하고 값을 추출하는 방법은 무엇입니까?
답변
데이터가 유효한 JSON 형식 이 아닙니다 . 당신은 당신이해야 []
할 때 {}
:
[]
list
파이썬에서 호출되는 JSON 배열 용{}
dict
파이썬에서 호출되는 JSON 객체 용
JSON 파일의 모양은 다음과 같습니다.
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": {
"id": "valore"
},
"om_points": "value",
"parameters": {
"id": "valore"
}
}
그런 다음 코드를 사용할 수 있습니다.
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
데이터를 사용하여 다음과 같은 값을 찾을 수도 있습니다.
data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]
그것들을 사용 해보고 이해가되는지 확인하십시오.
답변
당신 data.json
은 다음과 같이 보일 것입니다 :
{
"maps":[
{"id":"blabla","iscategorical":"0"},
{"id":"blabla","iscategorical":"0"}
],
"masks":
{"id":"valore"},
"om_points":"value",
"parameters":
{"id":"valore"}
}
코드는 다음과 같아야합니다.
import json
from pprint import pprint
with open('data.json') as data_file:
data = json.load(data_file)
pprint(data)
이것은 with
-statement에 의존하기 때문에 Python 2.6 이상에서만 작동합니다 . Python 2.5 use 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'
답변
Justin Peel의 답변 은 실제로 도움이되지만 Python 3을 사용하는 경우 JSON을 읽는 경우 다음과 같이해야합니다.
with open('data.json', encoding='utf-8') as data_file:
data = json.loads(data_file.read())
참고 : json.loads
대신 사용하십시오 json.load
. Python 3에서는 json.loads
문자열 매개 변수를 사용합니다. json.load
파일과 유사한 객체 매개 변수를 사용합니다. data_file.read()
문자열 객체를 반환합니다.
솔직히 말해서, 모든 json 데이터를 대부분의 경우 메모리에로드하는 것이 문제가되지 않는다고 생각합니다.
답변
data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
for line in f:
data.append(json.loads(line))
답변
“Ultra JSON”또는 간단히 “ujson”은 []
JSON 파일 입력을 처리 할 수 있습니다 . JSON 요소 목록으로 프로그램에서 JSON 입력 파일을 읽는 경우; 예를 들어, [{[{}]}, {}, [], etc...]
ujson은 임의의 순서의 사전 목록, 사전 사전을 처리 할 수 있습니다.
Python 패키지 인덱스 에서 ujson을 찾을 수 있으며 API는 Python의 내장 json
라이브러리 와 거의 동일합니다 .
더 큰 JSON 파일을로드하는 경우 ujson도 훨씬 빠릅니다. 제공된 동일한 링크에서 다른 Python JSON 라이브러리와 비교하여 성능 세부 사항을 볼 수 있습니다.
답변
Python3을 사용하는 경우 ( connection.json
파일) JSON을 다음과 같이 변경하십시오 .
{
"connection1": {
"DSN": "con1",
"UID": "abc",
"PWD": "1234",
"connection_string_python":"test1"
}
,
"connection2": {
"DSN": "con2",
"UID": "def",
"PWD": "1234"
}
}
그런 다음 다음 코드를 사용하십시오.
connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>> test1
답변
여기 수정 된 data.json
파일이 있습니다 :
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [{
"id": "valore"
}],
"om_points": "value",
"parameters": [{
"id": "valore"
}]
}
아래 줄을 사용하여 콘솔에서 데이터를 호출하거나 인쇄 할 수 있습니다.
import json
from pprint import pprint
with open('data.json') as data_file:
data_item = json.load(data_file)
pprint(data_item)
에 대한 예상 출력 print(data_item['parameters'][0]['id'])
:
{'maps': [{'id': 'blabla', 'iscategorical': '0'},
{'id': 'blabla', 'iscategorical': '0'}],
'masks': [{'id': 'valore'}],
'om_points': 'value',
'parameters': [{'id': 'valore'}]}
에 대한 예상 출력 print(data_item['parameters'][0]['id'])
:
valore