📜  Python – TSV 转换为 JSON

📅  最后修改于: 2022-05-13 01:55:30.451000             🧑  作者: Mango

Python – TSV 转换为 JSON

在本文中,我们将讨论如何使用Python将 TSV 文件转换为 JSON。

将 TSV 转换为 JSON

出于演示目的,我们将使用存储在 tsv 文件中的随机花卉数据集,其中包含几个表。

花数据集

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)


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)


解释:

  • 我们将从导入 json 模块开始,该模块是预先安装的,不需要安装。
  • 打开输入 tsv 文件并只读取第一行,将列表中的所有单词保存为我们的数据标签。
  • 我们需要创建一个空列表,我们称之为arr 。该列表最终将保存格式中的所有数据,并将写入 json 文件。
  • 现在我们将读取循环中的行并在循环内定义一个空的字典类型变量,我们将在其中将行中制表符分隔的值与我们从第一行检索到的标签压缩在一起。
  • 我们将利用 Python 的.zip()函数来压缩带有数据的标签。
  • 我们还将使用.strip()函数在将数据添加到字典之前对其进行剥离,因为该行中的最后一个数据将有一个换行符,这是我们不希望的。
  • 我们将把这个字典附加到循环块末尾的列表arr中。现在,在循环之外,我们将这个列表arr写入一个 json 文件,我们将使用json.dumps()函数来执行此操作,该函数将Python对象转换为 JSON字符串。

输出:

花.json

让我们看另一个例子。这是一个样本医院数据集,其中包含患者 ID、总就诊次数和收缩压。代码将保持不变;我们需要做的就是更新输入文件名和所需的输出文件名;否则,如果具有输出文件名的文件已经存在,它将覆盖。

医院数据集

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)

输出:

医院.json