python进阶 ---数据结构转化的几种方式

需求

在程序运行的过程中,未免会进行数据的交换,在此先简单的理解为数据的导入与导出。由于不同进程使用的数据结构很可能不同,因此进程间进行数据交互时就避免不了不同格式数据的互相转换。其中最常用的就是json格式与csv格式的数据,本文就简单介绍下这两种数据之间的互相转换以及它们与字典之间的互相转换。

字典数据与json格式数据的互相转化
import json

"""
1.将字典中的数据导入到json文件
2.将json文件中的数据导入到字典
"""

d1 = {
    'grape':'summer_fruit',
    'lemon': 'summer_fruit',
    'apple':'allyear_fruit',
    'orange':'allyear_fruit'
    }

with open('./fruit.json', 'w+', encoding='utf-8') as f:
    json.dump(d1, f, indent=1)
    # print(f)

with open('./fruit.json', 'r+') as e:
    d2 = dict(json.load(e))
    print(d2)
字典数据与csv格式数据的互相转化
import csv
"""
1.将字典中的数据导入到csv文件
2.将csv中的数据导入到字典
"""

d1 = {
    'grape':'summer_fruit',
    'lemon': 'summer_fruit',
    'apple':'allyear_fruit',
    'orange':'allyear_fruit'
    }

with open('./fruit.csv', 'w+', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(d1.items())

with open('./fruit.csv', 'r+', encoding='utf-8', newline='') as e:
    reader = csv.reader(e)
    d2 = dict(reader)
    print(d2)
json与csv格式的互相转化
import json
import csv

"""
1.json转化成csv
2.csv转换成json
"""

json_file = './fruit.json'
dest_file = './test.csv'

with open(json_file, 'r+', encoding='utf-8') as f:
    x = dict(json.load(f))
    # print(x)

with open(dest_file, 'w+', encoding='utf-8', newline='') as e:
    writer = csv.writer(e)
    writer.writerows(x.items()) #将数据写入csv文件

with open(dest_file, 'r+') as g:
    reader = csv.reader(g)
    for x in reader:
        # print(x)
        print(json.dumps(x)) #csv转换成json数据
数据库数据的导入与提取
from configparser import ConfigParser
import pymysql
import simplejson
import csv
"""
1.将表格中的数据导入数据库
2.查询数据库并将数据导入到表格
"""

data_file = './fruit.csv'
conf_file = './conn.json'

conf = simplejson.load(open(conf_file))
conn = None
cu = None
try:
    conn = pymysql.connect(**conf) #解构配置文件,生成连接器对象
    cu = conn.cursor()
    with open(data_file, 'r+', encoding='utf-8', newline='') as f:
        writer = csv.reader(f)
        # print(writer)
        for line in writer: #遍历表格然后生成sql
            sql = "insert into fruit(`name`, `class`) values('{}', '{}')".format(line[0], line[1])
            # print(sql)
            cu.execute(sql) #将sql执行,导入数据
            conn.commit()
except Exception:
    conn.rollback()
finally:
    with open('./xjw.csv', 'w+', encoding='utf-8', newline='') as e:
        sql = "select * from fruit;"
        cu.execute(sql)
        x = cu.fetchall()
        print(type(x), x)
        writer = csv.writer(e)
        writer.writerows(x)
    if cu:
        cu.close()
    if conn:
        conn.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值