首页 > 解决方案 > 将 JSON 转换为缺少字段名的 CSV

问题描述

我很难将 JSON 转换为 csv,因为某些记录上的名称没有显示出来。例如:

[{device: 1,
  name: 'John',
  age: 25,
  city: 'Denver'
 },
 {device: 2,
  name: 'Jake',
  age: 24,
  city: 'New York'
 },
 {device: 3,
  name: 'Phil',
  age: 23}]

它变得更加困难,因为它有几千行,有时这个城市是已知的,有时它不是。

我想把这些放在一个csv中,然后把菲尔的城市留空。

标签: jsonpython-3.xcsvjsonconvert

解决方案


你可以使用这个:

import json
import csv
js = """[{"device": 1,
  "name": "John",
  "age": 25,
  "city": "Denver"
 },
 {"device": 2,
  "name": "Jake",
  "age": 24,
  "city": "New York"
 },
 {"device": 3,
  "name": "Phil",
  "age": 23}]
  """
js = json.loads(js)

with open( 'result.csv', 'w' ) as csv_file:
    writer = csv.writer( csv_file )
    columns =  list({column for row in js for column in row.keys()})
    writer.writerow( columns )
    for row in js:
        writer.writerow([None if column not in row else row[column] for column in columns])

这甚至适用于不同的列名和更多的列!


推荐阅读