将 json 对象数组转换为 tsv (python)

Posted

技术标签:

【中文标题】将 json 对象数组转换为 tsv (python)【英文标题】:Convert an array of json objects to tsv (python) 【发布时间】:2014-12-29 16:33:27 【问题描述】:

假设我有以下 json 对象数组,我想将它们转换为 tsv 格式。

[
  
    "x": "1",
    "y": "2",
    "z": "3"
  ,
  
    "x": "6",
    "y": "7",
    "z": "B"
  
]

有人对此有好的解决方案吗? (python的json模块只允许读取json对象,但是如何读取json对象数组呢?)

x<TAB>y<TAB>z
1<TAB>2<TAB>3
6<TAB>7<TAB>8

【问题讨论】:

你试过什么?导入 JSON 对象时的格式应该与 csv's DictWriter 期望的格式完全相同。 【参考方案1】:

第一步是使用 json.loads 等将 JSON 字符串转换为 Python 对象数组。

最后一步是将 Python 对象写入文件,例如使用csv.DictWriter

这是一个完整的程序,演示了如何将 JSON 字符串转换为制表符分隔值文件。

import json
import csv

j = json.loads(r'''[
  
    "x": "1",
    "y": "2",
    "z": "3"
  ,
  
    "x": "6",
    "y": "7",
    "z": "B"
  
]''')

with open('output.tsv', 'w') as output_file:
    dw = csv.DictWriter(output_file, sorted(j[0].keys()), delimiter='\t')
    dw.writeheader()
    dw.writerows(j)

【讨论】:

【参考方案2】:

使用 Pandas 是一种有点笨拙的方法

> import sys
> import pandas as pd
> table = pd.read_json('''[
  
    "x": "1",
    "y": "2",
    "z": "3"
  ,
  
    "x": "6",
    "y": "7",
    "z": "B"
  
]''', orient='records')
> table.to_csv(sys.stdout, sep='\t', index=False)

x   y   z
1   2   3
6   7   B

【讨论】:

以上是关于将 json 对象数组转换为 tsv (python)的主要内容,如果未能解决你的问题,请参考以下文章

javascript 将表格文本(csv,tsv等)转换为javascript数组

将每个具有一个对象的 JSON 对象数组转换为 JSON 对象数组 [关闭]

Angular将json转换为对象数组

如何将多维数组转换为json对象[关闭]

将对象/数组转换为 JSON?

如何以角度将 JSON 对象数组转换为 Observable 数组