Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json对象数组转换为tsv(python)_Python_Arrays_Json_Tsv - Fatal编程技术网

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

将json对象数组转换为tsv(python),python,arrays,json,tsv,Python,Arrays,Json,Tsv,假设我有以下json对象数组,我想将它们转换为tsv格式 [ { "x": "1", "y": "2", "z": "3" }, { "x": "6", "y": "7", "z": "B" } ] 有人有好的解决办法吗?(python的json模块只允许读取json对象,但如何读取json对象数组?) xyz 123 678 第一步是使用例如JSON.loads将JSON字符串转换为Python对象数组 最后一步是使用例如csv

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

[
  {
    "x": "1",
    "y": "2",
    "z": "3"
  },
  {
    "x": "6",
    "y": "7",
    "z": "B"
  }
]
有人有好的解决办法吗?(python的json模块只允许读取json对象,但如何读取json对象数组?)

xyz
123
678

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

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

下面是一个完整的程序,演示如何将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)

一种有点严厉的方法是使用熊猫

> 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对象时的格式应与预期的格式完全相同。
> 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