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.
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:
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.
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: