绝对导入与相对导入、软件开发目录、正则表达式


一、绝对导入与相对导入

  • 导入的时候一定要确定自己的位置,是在执行文件中还是被导入文件中

"""在程序中涉及到多个文件之间导入模块的情况 一律按照执行文件所在的路径为准"""
绝对导入
	始终按照执行文件所在的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
"""
# 什么是正则表达式?
	利用一些特殊符号的组合去字符串中筛选出符合条件的数据
    
 
"""
1.必须是11位
2.必须是纯数字
3.必须符合手机号的排布  15 16 18 19
"""
# phone = input('请输入你的手机号>>>:').strip()
# if len(phone) == 11:
#     if phone.isdigit():
#         if phone.startswith('15') or phone.startswith('16') or phone.startswith('18') or phone.startswith('19'):
#             print('手机号正确')
#         else:
#             print('格式不对')
#     else:
#         print('手机号必须是纯数字')
# else:
#     print('必须是11位')


import re
phone_number = input('please input your phone number : ')
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
        print('是合法的手机号码')
else:
        print('不是合法的手机号码')

四、字符组

  • 记住是用中括号括起来的字符,包容性可以说很强,是单个字符的匹配

# 特征是使用中括号括起来的  字符串默认只能单个单个字符匹配
[0123456789]  # 匹配0到9之间任何一个数字
    可以简写为
    [0-9]
[a-z]  # 匹配小写字母a到字母z其中任意一个字母
[A-Z]  # 匹配大写字母A到字母Z其中任意一个字母
[a-zA-Z0-9]  # 匹配 小写 大写任意字母和0到9之间任何一个数字

五、特殊符号

  • 搭配使用效果更棒,单个字符匹配

# 特殊符号默认也只能单个单个字符匹配
. 		匹配除换行符以外的任意字符
\d		匹配数字
^		匹配字符串的开始
$		匹配字符串的结尾
		"""^与$组合使用可以精准限制要查找的数据"""
a|b		匹配字符a或字符b
()		匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配单纯的分组而已)
[...]	匹配字符组中的字符
[^...]	匹配除了字符组中字符的所有字符

六、量词

  • 量词可以理解为'贪婪匹配'的代名词,意思就是你有多少他就要多少,量词都是配合别人一起使用的,不能单个出现,影响也只会是紧跟量词前面的一个表达式

1.表达式在没有量词修饰的情况下 都是单个单个匹配
2.量词必须结合(字符串、特殊符合等)一起使用 不能单独出现
3.量词只能影响前面的一个表达式(ab+ 只能影响b)

*		重复零次或更多次
+		重复一次或更多次
?		重复零次或一次
{n}		重复n次
{n,}		重复n次或更多次
{n,m}		重复n到m次

"""
正则表达式中的量词默认都是'贪婪匹配'
"""

七、贪婪匹配与非贪婪匹配

  • 贪婪匹配:理解为一往无前,有多少要多少

  • 非贪婪匹配:理解为左右两边的字符决定他能得到多少

# 带匹配的字符串
	
# 正则表达式
	<.*>  '''默认贪婪匹配 尽可能多的匹'''
# 将贪婪变为非贪婪 只需要在量词的后面加问号即可
	<.*?> '''非贪婪匹配 尽可能少的匹  结束条件有左右两边决定'''
    
    ps:一些常见的正则不需要自己写,直接百度搜索即可,如电话,身份证...

相关