当前位置 : 主页 > 编程语言 > python >

json转csv

来源:互联网 收集:自由互联 发布时间:2022-06-15
json转csv ​​原数据​​ ​​完整代码​​ ​​代码解读​​ ​​后续​​ 第一次遇到原本的json格式数据,但是ArcGIS软件不认json,于是需要 转 成csv格式。本篇将讲解如何读取本地



json转csv

  • ​​原数据​​
  • ​​完整代码​​
  • ​​代码解读​​
  • ​​后续​​


第一次遇到原本的json格式数据,但是ArcGIS软件不认json,于是需要成csv格式。本篇将讲解如何读取本地json格式数据,并转为csv格式的。

原数据

先来看一看原来数据长什么模样

json转csv_json格式

json格式在我电脑里面长的像一个乐谱一样,用Notepad++软件打开就是那种一层一层嵌套的格式,和python里面的字典格式非常像,从第一个中括号“{”开始,后面的都是一对一对的这种键值对的形式出现,一个城市名,一个经纬度,如

'海门市': [121.15, 31.89]

并用逗号隔开。

json转csv_数据_02

完整代码

在弄清楚数据长什么样的之后,接下来就是写代码的事情了

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 7 09:57:54 2020
project name:json转csv
@author: 帅帅de三叔
"""
import csv #导入csv模块
filename = '中国333个地级及以上城市经纬度坐标.json'
file= open(filename, 'r', encoding='UTF-8') #打开json格式文件
with open("中国地级以上城市经纬度.csv", "w+",newline='') as csv_file: #新建csv格式文件
writer=csv.writer(csv_file) #对象化
header=["城市", "经度", "纬度"] #构造表头
writer.writerow(header) #写入表头
for line in file: #按行读取原json格式数据
if ":" in line: #如果有冒号的行
row=line.split(":") #分裂
city=row[0].replace("'","").strip() #提取城市名
lng=row[1].split(",")[0].replace("[","") #提取经度
lat=row[1].split(",")[1].replace("]","") #提取纬度
print(city,lng,lat)
data_row=[city,lng,lat] #组成一条数据
writer.writerow(data_row) #写入csv
csv_file.close() #关闭csv文件

代码解读

由于第一次读取本地json格式数据,此处写清楚一些,首先用open函数把中国333个地级及以上城市经纬度坐标.json以读取的方式并加以utf8编码方式的文件打开

file= open(filename, 'r', encoding='UTF-8') #打开json格式文件

打开之后就对行进行循环,由于第一行是个文件名称,故只处理带冒号的行

for line in file: #按行读取原json格式数据
if ":" in line: #如果有冒号的行

对每一行进行城市名称,经度,纬度三个字段的提取工作,这里主要用来split函数来分裂,和replace函数来去掉其他字符,最后把三者组合成一条数据写入到csv里面去,保存即可,文件夹下面多出一个csv文件

json转csv_json格式_03

后续

为了方面以后查阅,此处增加json模块下的两个重量级函数

函数

描述

json.dumps

将 Python 对象编码成 JSON 字符串

json.lodads

将已编码的 JSON 字符串解码为 Python 对象

这个在爬虫的时候可能会用到,今日暂且记录一下,等以后碰到再详细讲解。

json转csv_python_04



上一篇:excel格式批量转csv
下一篇:没有了
网友评论