一、二进制和字符串之间的相互转换
1.字符穿转换二进制
1)将字符串数据转换成二进制数据(只支持ASCII值转换)
str1 = 'abc'
b_str1 = b'abc'
print(b_str1) # b'abc'
print(type(str1),type(b_str1)) # <class 'str'> <class 'bytes'>
- bytes(字符串)
str2 = 'hello'
result = bytes(str2,encoding = 'utf-8')
print(result) # b'hello'
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(b1)) # "b'123abc'"
print(str(b1, encoding='utf-8')) # '123abc'
2)二进制.decode(encoding = ‘utf-8’)
result = b1.decode() # 123abc
print(result)
二、json
系统模块json中提供所有json和
1、什么是json
json是一种用来进行传输的通用的数据格式中的一种(另外一种是xml)。
这种数据格式的数据在网络传输的时候最大的优势就是小(速度快)
2、json数据格式类型对应的数据
1)格式要求:一个json有且只能有一个数据:这个唯一的数据必须是json支持的数据类型的数据
2)json支持的数据类型对应的数据
数字类型 - 直接写,列如:100,12.5,-23.5,23.8,3e2(整数前面不能写+)
字符串 - 必须使用双引号,支持转义字符,例如:“name”,“张三”,“ab/n”
布尔 - 只有true 和false两个值
null - 和None功能一样,表示空
数组 - 和列表一样,[元素1,元素2,元素3,····]
字典 - {键1:值1,键2:值2,·······},键只能是字符串
3、python数据与json数据之间的相互转换
1)json转python
a.转换原则
json -> python
数字 -> int、float
字符串 -> str(可能会将双引号变成单引号)
bool -> bool(true -> True ;false -> False)
null None
数组 -> list(里面的元素也会跟着转换)
字典 -> dict
b.工具:json.loads(json格式的字符串:str) - 将json数据转换成对应的python数据
json字符串 - json中的字符串,必须用双引号
json格式的字符串 - 字符串内容是json数据的字符串
result = json.loads('[120,"abc",null,true]')
print(result) # [120, 'abc', None, True]
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}])
print(result) #[10, "abc", true, [1, 2], [10, 20], {"a": 10}]
三、csv文件
1、读csv文件中的内容
1)打开文件
2)创建reader或者Dictreader
- csv.reader(csv文件对象) -> 返回的是一个迭代器(序列),迭代器中的元素是每一行对应的列表
- csv.Dictreader(csv文件对象) —> 返回的是一个迭代器(序列),迭代器中的元素是每一行数据对应的字典,字典的key是第一行的数据
- csv.Dictreader(csv文件对象,指定的key:list) -> 返回的是一个迭代器(序列),迭代器中的元素是每一行数据对应的字典,字典的key是指定的数据
3)通过创建reader获取文件内容
def list_reader():
with open('file/豆瓣电影.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('file/豆瓣电影.csv', encoding='utf-8', newline='') as f:
# 1)直接使用第一行的数据作为返回字典的键
reader = csv.DictReader(f)
# print(next(reader)) # {'排名': '1', '电影名称': '肖申克的救赎', '评分': '9.7'}
# print(reader.fieldnames)
reader.fieldnames
for x in reader:
print(x)
# 2)自定义每个数据对应的键
reader = csv.DictReader(f,['ranking','name','score'])
next(reader) # print(next(reader)) # 去掉原来的第一行字段
for x in reader:
print(x)
dict_reader()
2、csv的写操作
1)打开文件
2)创建writer
def list_writer():
with open('file/data.csv','w',encoding='utf-8',newline="") as f:
writer = csv.writer(f)
writer.writerow(['商品名','商品编号','商品的价格','商品的分类'])
writer.writerow(['可乐', '3', '饮料','y03'])
def dict_writer():
with open('file/data.csv','w',encoding='utf-8',newline='\r') as f:
writer = csv.DictWriter(f,['name', 'id', 'price', 'type'])
# 手动添加第一行的字段
writer.writeheader()
writer.writerow({'name':'商品名','id':"商品编号",'price':'商品价格','type':'商品类型'})
writer.writerow({'name':'面包'})