内置函数、json文本、pickle二进制

内置函数 built-in-function

  1. 进制
python 复制代码
print(bin(4)) #二进制转换 0b100
print(hex(10)) #16进制 0xa
print(oct(11))#8进制0o13
  1. 字符串和字符串数组化
python 复制代码
a=bytes("abcd",encoding="utf-8")
print(a.capitalize())  #生成一个新的字符串,a还是维持原样,字符串不可以修改
print(a)
b=bytearray('abcde',encoding="utf-8") #字节数组化,可以修改字符串了
print(b[0])  #获取字符串第一个
b[0]=98  #修改字符串
print(b)
  1. ascii码转换
python 复制代码
print(chr(97)) #把number转换为acsii码--结果为a
print(ord('a'))#把acsii码转换为number--结果为97
  1. 过滤
python 复制代码
c=filter(lambda n:n>5,range(10)) #过滤,只取大于5的数据
print(c)

json

  1. 需要导入json包,针对文本的读取写入。如
  2. json 中文 ensure_ascii=False;
  3. json 的 key 必须是字符串,非字符串会转换
  4. json 不支持 datetime、set、bytes、自定义对象,需要转换
python 复制代码
import json
data = {
    "name": "张三",
    "age": 25,
    "tags": ["python", "json"],
    "active": True,
    "score": None
}

# 对象 -> 字符串
s = json.dumps(data, ensure_ascii=False, indent=2)
print(s)  #读取json数据,打印出来

# 字符串 -> 对象
obj = json.loads(s) #将json数据存放到obj对象中
print(obj["name"]) #通过对象obj获取name值

# 写入文件:文本模式,utf-8
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2) #ensure_ascii=False中文正常显示,不转成 \uXXXX

# 从文件读取
with open("data.json", "r", encoding="utf-8") as f:
    data2 = json.load(f)
    print(data2)

写入的json文件

pickle

  1. 区别
python 复制代码
1、、使用方式
json.dumps(obj) -> str
json.loads(s) -> obj
json.dump(obj, f) 写文件
json.load(f) 读文件

pickle.dumps(obj) -> bytes
pickle.loads(b) -> obj
pickle.dump(obj, f) 写二进制文件
pickle.load(f) 读二进制文件

读写文件方式不一样
json:w、r
pickle:wb rb
3、使用场景
json:通用
pickle是Python专用
4、格式
json:文本格式
pickle:二进制格式
5、存储内容格式
json支持:dict、list、str、int、float、bool、None
pickle能存几乎任意Python对象,如类实例、集合、元组
  1. 代码样式
python 复制代码
import pickle

class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

u = User("张三", 25)

# 对象 -> bytes,bytes是二进制协议
b = pickle.dumps(u, protocol=pickle.HIGHEST_PROTOCOL)
print(type(b))  # <class 'bytes'>

# bytes -> 对象
u2 = pickle.loads(b)
print(u2.name, u2.age)

# 写入文件:必须二进制模式 wb
with open("user.pkl", "wb") as f:
    pickle.dump(u, f, protocol=pickle.HIGHEST_PROTOCOL)

# 读取文件:必须二进制模式 rb
with open("user.pkl", "rb") as f:
    u3 = pickle.load(f)
    print(u3.name, u3.age)
相关推荐
星夜离尘562 小时前
MATLAB 工程实验:不等间隔流量积分,先把缺口与覆盖率说清楚
开发语言·matlab·时间戳·数据质量·数值积分
happylifetree2 小时前
Python70:核心语法-函数进阶-案例2
python
Ai-_Man2 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
梓豪csd2 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
王中阳Go2 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
BK贝壳2 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
学逆向的3 小时前
C 枚举变量
c语言·开发语言·网络安全
Sakura_j_h_3 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
supabc1234 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
ZhengEnCi5 小时前
AI Agent工具调用防护层怎么写-一份能直接跑的Python四层拦截实现
python·llm·agent