一、二进制和字符串之间的相互转换

1.字符穿转换二进制

1)将字符串数据转换成二进制数据(只支持ASCII值转换)

str1 = 'abc'
b_str1 = b'abc'
print(b_str1)  # b'abc'
print(type(str1),type(b_str1))   # <class 'str'> <class 'bytes'>
  1. 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':'面包'})