3.20 作业加总结

json和csv

1.字符串(str)转二进制(bytes)

字符串转二进制

1)将字符串数据转换成二进制数据

str1 = 'abc'
b_str1 = b'abc'
print(type(str1), type(b_str1))     # <class 'str'> <class 'bytes'>

2)bytes(字符串)

str2 = 'hello'
result = bytes(str2, encoding='utf-8')
print(type(result))     # <class 'bytes'>
  1. 字符串.encode(encoding=‘utf-8’)
str3='hello'
result=str3.encode()
print(type(result))  # <class 'bytes'>

2、二进制转字符串

1)类型转换:str(二进制,encoding=‘utf-8’)

b1=b'abc123'
print(b1)  # "b'abc123'"
print(str(b1,encoding='utf-8'))  # abc123

2)二进制.decode(encoding=‘utf-8’->一般省略 )

result=b1.decode()
print(result)  # abc123

json数据

系统模块json中提供了所有的json和Python之间相互转换的相关函数

1、什么是json
json是一种用来进行传输的通用的数据格式中的一种(另外一种是xml)。
这种数据格式的数据在网络传输的过程中最大优势小(速度快)。
2、json的数据格式

格式要求:
1)一个json有且只能有一个数据
2)这个唯一的数据必须是json支持的数据

json支持的数据类型对应的数据:
1)数字类型 - 直接写,比如100,22.3,-34.2,3e2(正数前面不能写加号)
2)字符串 - 必须使用双引号,支持转义字符,例如"张三",“abc\n”
3)布尔 - 只有true和false两个值
4)null - 和None功能一样,表示空
5)数组 - 和列表一样,[元素1,元素2,元素3……]
6)字典 - {键1:值1,键2:值2……} 键只能是字符串

3、Python数据和json数据之间的相互转换
1)json转Python

a、转换原则
json -> python
数字 int、float
字符串 str(可能会将双引号转换成单引号)
布尔 bool(true —> True;false ->False)
null None
数组 list
字典 dict

b、工具
json.loads(json格式的字符串:str) - 将json数据转换成Python数据
json字符串 - json中的字符串,必须使用双引号
json格式的字符串 - 字符串内容是json数据的字符串

result=json.loads('123')
print(result,type(result))  # 123 <class 'int'>

result=json.loads('[120,"abc",true,null]')
print(result)  # [120, 'abc', True, None]

2)Python转json

a、转换原则
python -> json
int、float 数字
str 字符串的引号变成双引号
bool True -> true,False -> false
None null
list,tuple 数组
dict 字典

b、工具
json.dumps(Python数据) 将Python转换成json格式的字符串

result=json.dumps([12,'abc',True,[1,2],{'a':10},(10,20)])
print(result)  # [12, "abc", true, [1, 2], {"a": 10}, [10, 20]]

csv文件

import csv

1、读csv文件的内容

1)打开文件
2)创建reader或者DictReader
csv.reader(csv文件对象) -> 返回的是迭代器(序列)。迭代器中的元素是每一行的数对应的列表

csv.DictReader(csv文件对象) -> 返回一个迭代器(序列),迭代器中的元素是每一行数据对应的字典,字典的key是第一行的数据
csv.DictReader(csv文件对象,指定的key:list) -> 返回一个迭代器(序列),迭代器中的元素是每一行数据对应的字典,字典的key是指定的数据

def list_reader():
    with open('files/豆瓣电影.csv',encoding='utf-8',newline='') as f:
        # a.列表的reader
        reader=csv.reader(f)
        print(next(reader))  # ['排名', '电影名称', '评分']
        # print(next(reader))
        for x in reader:
            print(x)

# list_reader()
def dict_reader():
    with open('files/豆瓣电影.csv', encoding='utf-8', newline='') as f:
        # 1)直接使用第一行的数据作为返回的字典的键
        # reader=csv.DictReader(f)
        # print(reader.fieldnames)
        # # print(next(reader))  # {'排名': '1', '电影名称': '肖申克的救赎', '评分': '9.7'}
        # for x in reader:
        #     print(x)

        # 2)自定义每个数据对应的键
        reader=csv.DictReader(f,['ranking','name','score'])
        next(reader)   #  去掉原来的第一行的字段
        for x in reader:
            print(x)

# dict_reader()

2、csv文件的写操作

1)打开文件
2)创建writer
3)写入数据

def list_writer():
    with open('files/data1.csv','w',encoding='utf-8',newline='')as f :
        writer=csv.writer(f)
        writer.writerow(['商品名','商品编号','商品的价格','商品分类'])
        writer.writerow(['可口可乐','g001','饮料'])
        writer.writerows([
            ['薯片','g002',3.5,'垃圾食品'],
            ['辣条','g003',1,'面食'],
            ['苹果','g004',6,'水果']

        ])

list_writer()


def dict_writer():
    with open('files/data2.csv','w',encoding='utf-8',newline='')as f:
        writer=csv.DictWriter(f,['name','id','price','type'])
        # s手动添加第一行字段
        # writer.writeheader()  将字段的值作为第一行内容写在文件中
        writer.writerow({'name':'商品名称','id':'商品编号','price':'商品价格','type':'商品类型'})
        writer.writerow({'name':'面包','price':'g007'})
        writer.writerows([
            {'name':'雪碧','id':'g008','price':3,'type':'饮料'},
            {}

        ])

dict_writer()

作业

学生管理系统的要求:
0.重写登录注册 (账号和密码保存到json文件中)
\1. 账号和添加的学生对应
\2. 支持增、删、改、查
\3. 做到学生信息持久化 (学生信息保存到csv文件中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值