objeto limpiar libreria leer instalar how guardar formato escribir dinamico datos crear convertir archivo python json parsing

python - limpiar - Analizar valores de un archivo JSON?



limpiar json python (8)

"Ultra JSON" o simplemente "ujson" puede manejar tener [] en la entrada del archivo JSON. Si está leyendo un archivo de entrada JSON en su programa como una lista de elementos JSON; tales como, [{[{}]}, {}, [], etc...] ujson puede manejar cualquier orden arbitrario de listas de diccionarios, diccionarios de listas.

Puede encontrar ujson en el índice del paquete Python y la API es casi idéntica a la biblioteca json incorporada de Python.

ujson también es mucho más rápido si está cargando archivos JSON más grandes. Puede ver los detalles de rendimiento en comparación con otras bibliotecas JSON de Python en el mismo enlace proporcionado.

Tengo este JSON en un archivo:

{ "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": [ "id": "valore" ], "om_points": "value", "parameters": [ "id": "valore" ] }

Escribí este script que imprime todo el texto json:

json_data=open(file_directory).read() data = json.loads(json_data) pprint(data)

¿Cómo puedo analizar el archivo y extraer valores individuales?


Creo que lo que Ignacio está diciendo es que su archivo JSON es incorrecto. Tienes [] cuando deberías tener {} . [] son para listas, {} son para diccionarios.

Así es como debería verse su archivo JSON, su archivo JSON ni siquiera se cargaría para mí:

{ "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": { "id": "valore" }, "om_points": "value", "parameters": { "id": "valore" } }

Entonces puedes usar tu código:

import json from pprint import pprint with open(''data.json'') as f: data = json.load(f) pprint(data)

Con los datos, ahora también puedes encontrar valores así:

data["maps"][0]["id"] data["masks"]["id"] data["om_points"]

Pruébalos y ve si comienza a tener sentido.


Hay dos tipos en este análisis.

  1. Análisis de datos de un archivo desde una ruta del sistema
  2. Analizar JSON desde una URL remota.

Desde un archivo, puede utilizar los siguientes

import json json = json.loads(open(''/path/to/file.json'').read()) value = json[''key''] print json[''value'']

Este artículo explica el análisis completo y la obtención de valores utilizando dos escenarios. Analizando JSON usando Python


Si estás en Python 3, aquí es cómo puedes hacerlo.

{ "connection1": { "DSN": "con1", "UID": "abc", "PWD": "1234", "connection_string_python":"test1" } , "connection2": { "DSN": "con2", "UID": "def", "PWD": "1234" } }

El código debe verse como asumiendo que el archivo connection.json se ve como arriba

connection_file = open(''connection.json'', ''r'') conn_string = json.load(connection_file) conn_string[''connection1''][''connection_string_python'']) connection_file.close() >>>test1


Tu data.json debería verse así:

{ "maps":[ {"id":"blabla","iscategorical":"0"}, {"id":"blabla","iscategorical":"0"} ], "masks": {"id":"valore"}, "om_points":"value", "parameters": {"id":"valore"} }

Su código debe ser:

import json from pprint import pprint with open(''data.json'') as data_file: data = json.load(data_file) pprint(data)

Tenga en cuenta que esto solo funciona en Python 2.6 y superior, ya que depende de la with-statement . En Python 2.5, use from __future__ import with_statement , en Python <= 2.4, vea la respuesta de Justin Peel , en la que se basa esta respuesta.

Ahora también puedes acceder a valores únicos como este:

data["maps"][0]["id"] # will return ''blabla'' data["masks"]["id"] # will return ''valore'' data["om_points"] # will return ''value''


La respuesta de Justin Peel es realmente útil, pero si está usando Python 3, la lectura de JSON debería hacerse de la siguiente manera:

with open(''data.json'', encoding=''utf-8'') as data_file: data = json.loads(data_file.read())

Nota: use json.loads lugar de json.load . En Python 3, json.loads toma un parámetro de cadena. json.load toma un parámetro de objeto tipo archivo. data_file.read() devuelve un objeto de cadena.


# Here you go with modified json file: # data.json file : { "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscategorical": "0" } ], "masks": [{ "id": "valore" }], "om_points": "value", "parameters": [{ "id": "valore" }] } # You can call or print data on console by using below lines 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'']) #Output : #pprint(data_item) output as : {''maps'': [{''id'': ''blabla'', ''iscategorical'': ''0''}, {''id'': ''blabla'', ''iscategorical'': ''0''}], ''masks'': [{''id'': ''valore''}], ''om_points'': ''value'', ''parameters'': [{''id'': ''valore''}]} #print(data_item[''parameters''][0][''id'']) output as : valore


data = [] with codecs.open(''d:/output.txt'',''rU'',''utf-8'') as f: for line in f: data.append(json.loads(line))