Convertir archivo de texto a JSON en Python

JSON (Notación de objetos de JavaScript) es un formato de intercambio de datos que es texto legible por humanos y se utiliza para transmitir datos, especialmente entre aplicaciones web y servidores. Los archivos JSON serán como diccionarios anidados en Python. Para convertir un archivo de texto en JSON, hay un jsonmódulo en Python. Este módulo viene integrado con los módulos estándar de Python, por lo que no es necesario instalarlo externamente.

Consulte la siguiente tabla que se proporciona a continuación para ver la serialización de JSON, es decir, el proceso de codificación de JSON.

objeto python objeto JSON
dictar objeto
lista, tupla formación
calle cuerda
int, largo, flotante números
Verdadero verdadero
Falso falso
Ninguna nulo

Para manejar el flujo de datos en un archivo, la biblioteca JSON en Python usa dump()una función para convertir los objetos de Python en su respectivo objeto JSON, por lo que facilita la escritura de datos en los archivos.

Sintaxis:

json.dump()

Se pueden pasar varios parámetros a este método. Ayudan a mejorar la legibilidad del archivo JSON. Están :

  • objeto dict: el diccionario que contiene los pares clave-valor.
  • sangría: la sangría adecuada para la legibilidad (un valor numérico).
  • separator : cómo se deben separar los objetos entre sí, cómo se debe separar un valor de su clave. Los símbolos como “, “, “:”, “;”, “.” son usados
  • sort_keys : si se establece en verdadero, las claves se ordenan en orden ascendente

Aquí la idea es almacenar el contenido del texto como pares clave-valor en el diccionario y luego volcarlo en un archivo JSON. A continuación se explica un ejemplo sencillo. El archivo de texto contiene los detalles de una sola persona. El archivo text1.txt se ve así:

The text file-sample1.txt

Ahora, para convertir esto a un archivo JSON, se puede usar el siguiente código:

# Python program to convert text
# file to JSON
  
  
import json
  
  
# the file to be converted to 
# json format
filename = 'data.txt'
  
# dictionary where the lines from
# text will be stored
dict1 = {}
  
# creating dictionary
with open(filename) as fh:
  
    for line in fh:
  
        # reads each line and trims of extra the spaces 
        # and gives only the valid words
        command, description = line.strip().split(None, 1)
  
        dict1[command] = description.strip()
  
# creating json file
# the JSON file is named as test1
out_file = open("test1.json", "w")
json.dump(dict1, out_file, indent = 4, sort_keys = False)
out_file.close()

Cuando se ejecuta el código anterior, si existe un archivo JSON en el nombre dado, se escribe en él; de lo contrario, se crea un nuevo archivo en la ruta de destino y se escribe el contenido en él.

Producción:

The resultant JSON file:

Tenga en cuenta la siguiente línea de código:

command, description = line.strip().split(None, 1)

Aquí split(Ninguno, 1) se usa para recortar todos los espacios sobrantes entre un par clave-valor y ‘1’ denota división solo una vez en una línea. Esto garantiza que en un par clave-valor, los espacios en el valor no se eliminen y esas palabras no se dividan. Solo la clave se separa de su valor.

¿Cómo convertir si se almacenan varios registros en el archivo de texto?
Consideremos el siguiente archivo de texto que es un registro de empleado que contiene 4 filas.

sample2.txt

La idea es convertir los detalles de cada empleado en un diccionario intermedio y agregarlo a un diccionario principal resultante. Para cada diccionario intermedio se crea una identificación única que sirve como clave. Por lo tanto, aquí la identificación del empleado y un diccionario intermedio forman un par clave-valor para que se descargue el diccionario resultante.

# Python program to convert text
# file to JSON
  
  
import json
  
  
# the file to be converted
filename = 'data.txt'
  
# resultant dictionary
dict1 = {}
  
# fields in the sample file 
fields =['name', 'designation', 'age', 'salary']
  
with open(filename) as fh:
      
  
      
    # count variable for employee id creation
    l = 1
      
    for line in fh:
          
        # reading line by line from the text file
        description = list( line.strip().split(None, 4))
          
        # for output see below
        print(description) 
          
        # for automatic creation of id for each employee
        sno ='emp'+str(l)
      
        # loop variable
        i = 0
        # intermediate dictionary
        dict2 = {}
        while i<len(fields):
              
                # creating dictionary for each employee
                dict2[fields[i]]= description[i]
                i = i + 1
                  
        # appending the record of each employee to
        # the main dictionary
        dict1[sno]= dict2
        l = l + 1
  
  
# creating json file        
out_file = open("test2.json", "w")
json.dump(dict1, out_file, indent = 4)
out_file.close()

Los atributos asociados con cada columna se almacenan en una lista separada llamada ‘campos’ . En el código anterior, cada línea se divide en función del espacio y se convierte en un diccionario. Cada vez que se ejecuta la impresión de línea (atributos) , aparece como se indica a continuación.

['Lisa', 'programmer', '34', '54000']
['Elis', 'Trainee', '24', '40000']
['Rickson', 'HR', '30', '47000']
['Kate', 'Manager', '54', '63000']

El archivo JSON creado por este código se ve así:

test2.json

Publicación traducida automáticamente

Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *