脚本源码
#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
import csv
import json
def main():
keys, values = [], []
for k, v in mapping.items():
keys.append(k)
values.append(v)
with open(path, 'r', encoding='UTF-8') as f1:
json_lines = f1.readlines()
f1.close()
data = []
for i in json_lines:
_data, _, i = [], None, json.loads(i)
for va in values:
try:
exec(f"""_ = i{va};_data.append(_)""")
except (Exception,):
_data.append('')
data.append(_data)
with open(path + '.csv', 'w', encoding='utf-8', newline='') as f2:
writer = csv.writer(f2)
writer.writerow(keys)
writer.writerows(data)
f2.close()
if __name__ == '__main__':
path = r'.\medusa.json'
mapping = {
'状态': '["status"]',
'username': '["data"]["username"]'
}
main()
配置
path是你的.json文件地路径, 运行成功后会以你的 json 文件命名.csv文件mapping是你需要关注字段的映射字典- key:映射的表头
- value:每一行 json 数据的下标索引字符串
演示
json 文件内容:
{"status": 200, "data": {"username": "medusa 1"}}
{"status": 200, "data": {"username": "medusa 2"}}
{"status": 200, "data": {"username": "medusa 3"}}
{"status": 200, "data": {"username": "medusa 4"}}
{"status": 200, "data": {"username": "medusa 5"}}
脚本配置:
path = r'.\medusa.json'
mapping = {
'状态': '["status"]',
'username': '["data"]["username"]'
}
csv 展示: