python3.19总结

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'>

3)字符串.encode(encoding= ‘utf-8’)

str3 = 'python数据'
result = str3.encode()
print(type(result))    # <class 'bytes'>

2.二进制转换为字符串

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

b1 = b'123abc;'
print(b1)      # b'123abc'
print(str(result, encoding='utf-8'))      # '123abc'

2)二进制.decode(encoding=‘utf-8’)

result = result.decode()
print(result)

3.json数据

1)什么是json?

json是一种用来进行传输的通用的数据格式中的一种(另外一种是xml)。

这种数据格式的数据在网络传输的时候最大的优势就是小(速度快)

2)json数据格式

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

(2) json支持的数据类型对应的数据

数字类型 -> 直接写(整数前面不能加+)

字符串 -> 必须使用双引号,支持转义字符

布尔 -> 只有true和false两个值

null -> 和None一样表示空

数组 -> 和列表一样

字典 -> 键只能是字符串

3)python和json数据之间的转换

(1)json转python

a.转换原则

json --> python

数字 int、float

字符串 str

布尔 bool(小写变为大写)

null None

数组 list

字典 dict

b.工具

json.loads(json格式的字符串: str) 将json数据转换成对应的Python数据

json字符串 json中的字符串,必须用双引号

json格式的字符串 - 字符串内容是json数据的字符串

result = json.loads('123')
print(result, type(result))

result = json.loads('"abc"')
print([result], type(result))

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

(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([10, 'abc', True, [1, 2], (10, 20), {'a': 10, 10: 20}])
print(result) 
#  # '[10, "abc", true, [1, 2], [10, 20], {"a": 10, "10": 20}]'

4.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('========================================================') for x in reader: print(x)

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)

2)csv的写文件

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


def dict_writer():
    with open('files/data2.csv', 'w', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, ['name', 'id', 'price', 'type'])
        # 手动添加第一行的字段
        # writer.writeheader()     # 将设置的字段的值作为第一行内容写入文件中

        writer.writerow({'name': '商品名称', 'id': '商品编号', 'price': '商品价格', 'type': '商品类型'})

        writer.writerow({'name': '面包', 'id': 'g007'})
        writer.writerows([
            {'name': '雪碧', 'id': 'g008', 'price': 3, 'type': '碳酸饮料'},
            {'name': '瓜子', 'id': 'g009'}
        ])

dict_writer()