2-7 内置模块和项目规范
概要:
-
内置模块
-
json
-
time
-
datetime
-
re
-
-
开发规范
-
主文件
-
配置文件
-
数据
-
1. 内置模块
1.1 json
json模块,是python内部的一个模块,可以将python的数据格式 转换为json格式的数据,也可以将json格式的数据转换为python的数据格式。
json格式,是一个数据格式(本质上就是个字符串,常用语网络数据传输)
1.1.1 核心功能
json格式的作用?
跨语言数据传输,例如: A系统用Python开发,有列表类型和字典类型等。 B系统用Java开发,有数组、map等的类型。 语言不同,基础数据类型格式都不同。 为了方便数据传输,大家约定一个格式:json格式,每种语言都是将自己数据类型转换为json格式,也可以将json格式的数据转换为自己的数据类型。
Python数据类型与json格式的相互转换:
-
数据类型 -> json ,一般称为:序列化
-
json格式 -> 数据类型,一般称为:反序列化
1.1.2 类型要求
python的数据类型转换为 json 格式,对数据类型是有要求的,默认只支持:
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
data = [
{"id": 1, "name": "ayden", "age": 18},
{"id": 2, "name": "alex", "age": 18},
]
其他类型如果想要支持,需要自定义JSONEncoder才能实现,例如:
1.1.3 其他功能
json模块中常用的是:
-
json.dumps,序列化生成一个字符串。 -
json.loads,发序列化生成python数据类型。 -
json.dump,将数据序列化并写入文件(不常用) -
json.load,读取文件中的数据并反序列化为python的数据类型(不常用)
1.2 时间处理
-
UTC/GMT:世界时间
-
本地时间:本地时区的时间。
Python中关于时间处理的模块有两个,分别是time和datetime。
1.2.1 time
1.2.2 datetime
在平时开发过程中的时间一般是以为如下三种格式存在:
-
datetime
-
字符串
-
时间戳
1.3 正则表达式相关
当给你一大堆文本信息,让你提取其中的指定数据时,可以使用正则来实现。例如:提取文本中的邮箱和手机号
1.3.1 正则表达式
1. 字符相关
-
[abc]匹配a或b或c 字符。 -
[^abc]匹配除了abc意外的其他字符。 -
[a-z]匹配a~z的任意字符( [0-9]也可以 )。 -
.代指除换行符以外的任意字符。 -
\w代指字母或数字或下划线(汉字)。 -
\d代指数字 -
\s代指任意的空白符,包括空格、制表符等。
2. 数量相关
-
*重复0次或更多次 -
+重复1次或更多次 -
?重复0次或1次 -
{n}重复n次 -
{n,}重复n次或更多次 -
{n,m}重复n到m次
3. 括号(分组)
-
提取数据区域
-
获取指定区域 + 或条件
应用
-
利用正则匹配QQ号码
[1-9]\d{4,} -
身份证号码
-
手机号
-
邮箱地址
4. 起始和结束
上述示例中都是去一段文本中提取数据,只要文本中存在即可。
但,如果要求用户输入的内容必须是指定的内容开头和结尾,比就需要用到如下两个字符。
-
^开始 -
$结束
这种一般用于对用户输入数据格式的校验比较多,例如:
5. 特殊字符
由于正则表达式中 * . \ { } ( ) 等都具有特殊的含义,所以如果想要在正则中匹配这种指定的字符,需要转义,例如:
1.3.2 re模块
python中提供了re模块,可以处理正则表达式并对文本进行处理。
-
findall,获取匹配到的所有数据
-
match,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None
-
search,浏览整个字符串去匹配第一个,未匹配成功返回None
-
sub,替换匹配成功的位置
-
split,根据匹配成功的位置分割
-
""" 函数注释 """ # TODO 待完成时,下一期实现xxx功能 for i in range(10): pass def run(): """ 函数注释 """ # 对功能代码进行注释 text = input(">>>") print(text) if __name__ == '__main__': run()
2.2 单可执行文件
新创建一个项目,假设名字叫 【crm】,可以创建如下文件和文件夹来存放代码和数据。
crm
├── app.py 文件,程序的主文件(尽量精简)
├── config.py 文件,配置文件(放相关配置信息,代码中读取配置信息,如果想要修改配置,即可以在此修改,不用再去代码中逐一修改了)
├── db 文件夹,存放数据
├── files 文件夹,存放文件
├── src 包,业务处理的代码
└── utils 包,公共功能
2.3 多可执行文件
新创建项目,假设名称叫【killer】,可以创建如下文件和文件夹来存放代码和数据。
killer
├── bin 文件夹,存放多个主文件(可运行)
│ ├── app1.py
│ └── app2.py
├── config 包,配置文件
│ ├── __init__.py
│ └── settings.py
├── db 文件夹,存放数据
├── files 文件夹,存放文件
├── src 包,业务代码
│ └── __init__.py
└── utils 包,公共功能
└── __init__.py

浙公网安备 33010602011771号