内容概要
- 绝对导入与相对导入
- 软件开发目录规范
- 常用模块(内置模块,第三方模块)
绝对导入与相对导入
在程序中涉及到多个文件导入模块的情况,一律按照执行文件所在的路径为准
绝对导入
始终按照执行文件所在的sys.path查找模块
相对导入
句点符(.)
.表示当前文件路径
..表示上一层文件路径
能够打破始终以执行文件为准的规则,只考虑两个文件之间的位置
相对导入只能在模块文件中使用,不能再执行文件中使用
软件开发目录规范
目录规范没有固定要求,只要符合清晰可读就可以
bin文件夹
存放一系列启动文件(当启动文件很少或只有一个的时候可以直接写在外面)
start.py
conf文件夹
存放一系列配置文件
settings.py(一般情况下该文件的变量名都是大写)
lib文件夹
存放公共的功能
common.py
db文件夹
存放数据相关文件
userinfo.txt
log文件夹
存放日志记录文件
log.txt
core文件夹
存放项目核心代码文件
src.py
readme文件
存放说明相关信息
requirements.txt
存放项目所需的第三方模块及版本号
正则表达式
正则表达式是一门独立的语言,和其他编程语言没有关系
如果想要再python中使用需要使用内置模块re
什么是正则表达式
利用一些特殊符号的组合,去字符串中筛选出符合条件的数据
传统方法
phone = input('手机号: ').strip()
if len(phone) == 11:
if phone.isdigit():
if phone.startswith('15') or phone.startswith('18') or phone.startswith('13'):
print('手机号正确')
else:
print('格式不对')
else:
print('不是纯数字')
else:
print('手机号必须11位')
正则表达式
import re
phone = input('手机号: ').strip()
if re.match('^(13|15|18)[0-9]{9}$', phone):
print('输入正确')
else:
print('输入不合法')
字符组
用中括号括起来,字符默认单个匹配
[0123456789] # 匹配0-9之间任意一个数字 简写[0-9]
[a-z] # 匹配小写字母a-z之间任意一个字母
[A-Z] # 匹配大写字母A-Z之间任意一个字母
[0-9a-zA-Z] # 匹配所有数字 大写字母 小写字母
特殊符号
特殊符号默认单个匹配
. # 匹配除换行符之外任何一个字符
\d # 匹配数字
^ # 匹配字符串开始
$ # 匹配字符串结尾
^与$组合可以精确限制要找的数据
a|b # 匹配字符a或b
() # 匹配括号内的表达式也是一个组(不影响正则表达式匹配,就是一个组)
[...] # 匹配字符组中的字符
[^...] # # 匹配除字符组中字符的所有字符
量词
1.表达式在没有量词修饰的情况下,都是单个匹配
2.量词必须结合(字符串,特殊符号等)一起使用,不能单独出现
3.量词只能影响前面的一个表达式(ab+ 只影响b)
* # 重复0次或更多次
+ # 重复1次或更多次
? # 重复0次或1次
{n} # 重复n次
{n,} # 重复n次或更多次
{n,m} # 重复n到m次
正则表达式中的量词默认是'贪婪匹配'
贪婪匹配与非贪婪匹配
带匹配的字符串
<script>123</script>
正则表达式
<.*> # 默认贪婪匹配,尽可能多的匹配
将贪婪变成非贪婪,在量词后面加?就可以
<.*?> # 非贪婪匹配尽可能少的匹配,结束条件由左右两边决定
![image]()