Python: conversión de TSV a JSON

En este artículo, discutiremos cómo convertir archivos TSV a JSON usando Python.

Conversión de TSV a JSON

Aquí, con fines de demostración, utilizaremos un conjunto de datos de flores aleatorios almacenados en un archivo tsv con pocas tablas. 

conjunto de datos de flores

Python3

import json
  
def tsv2json(input_file,output_file):
    arr = []
    file = open(input_file, 'r')
    a = file.readline()
      
    # The first line consist of headings of the record 
    # so we will store it in an array and move to 
    # next line in input_file.
    titles = [t.strip() for t in a.split('\t')]
    for line in file:
        d = {}
        for t, f in zip(titles, line.split('\t')):
            
              # Convert each row into dictionary with keys as titles
            d[t] = f.strip()
              
        # we will use strip to remove '\n'.
        arr.append(d)
          
        # we will append all the individual dictionaires into list 
        # and dump into file.
    with open(output_file, 'w', encoding='utf-8') as output_file:
        output_file.write(json.dumps(arr, indent=4))
  
# Driver Code
input_filename = 'flower.tsv'
output_filename = 'flower.json'
tsv2json(input_filename,output_filename)

Explicación: 

  • Comenzaremos importando el módulo json, que viene preinstalado y no requiere instalación. 
  • Abra el archivo tsv de entrada y lea solo la primera línea, guardando todas las palabras en la lista como nuestras etiquetas de datos. 
  • Tendremos que crear una lista vacía, llamémosla arr . Esta lista finalmente contendrá todos los datos en el formato y se escribirá en un archivo json. 
  • Ahora leeremos las líneas en un bucle y definiremos una variable de tipo diccionario vacía dentro del bucle donde uniremos los valores separados por tabuladores en la línea con las etiquetas que recuperamos de la primera línea. 
  • Utilizaremos la función .zip() de Python para comprimir etiquetas con datos. 
  • También usaremos la función .strip() para eliminar los datos antes de agregarlos al diccionario porque los últimos datos de la fila tendrán un salto de línea, que no queremos. 
  • Agregaremos este diccionario a nuestra lista arr al final del bloque de bucle. Ahora, fuera del bucle, escribiremos esta lista arr en un archivo json y lo haremos con la función json.dumps() , que convierte un objeto Python en una string JSON.

Producción:

flor.json

Veamos otro ejemplo. Aquí hay un conjunto de datos de hospital de muestra que contiene identificaciones de pacientes, visitas totales y presión arterial sistólica. El código seguirá siendo el mismo; todo lo que tenemos que hacer es actualizar el nombre del archivo de entrada y el nombre del archivo de salida deseado; de lo contrario, se sobrescribirá si el archivo con el nombre de archivo de salida ya existe. 

conjunto de datos hospitalarios

 

Python3

import json
  
def tsv2json(input_file,output_file):
    arr = []
    file = open(input_file, 'r')
    a = file.readline()
      
    # The first line consist of headings of the record 
    # so we will store it in an array and move to 
    # next line in input_file.
    titles = [t.strip() for t in a.split('\t')]
    for line in file:
        d = {}
        for t, f in zip(titles, line.split('\t')):
            
              # Convert each row into dictionary with keys as titles
            d[t] = f.strip()
              
        # we will use strip to remove '\n'.
        arr.append(d)
          
        # we will append all the individual dictionaires into list 
        # and dump into file.
    with open(output_file, 'w', encoding='utf-8') as output_file:
        output_file.write(json.dumps(arr, indent=4))
  
# Driver Code
input_filename = 'hospital.tsv'
output_filename = 'hospital.json'
tsv2json(input_filename,output_filename)

Producción:

hospital.json

Publicación traducida automáticamente

Artículo escrito por sp3768546 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 *