将 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数组