模块的导入、软件开发目录规范与正则表达式

今日内容概要

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

绝对导入与相对导入

# 绝对导入
	始终按照执行文件所在的sys.path查找模块
    
# 相对导入
	句点符 .
    	. 表示当前文件路径
    	.. 表示上一层文件路径
"""
此种方式可以打破始终以执行文件为准的规则 
但是
	相对导入只能在模块文件中使用
	不能再执行文件中使用!!!
"""

image

软件开发目录规范

'''目录规范并无固定的要求 只要符合清晰可读即可'''

bin 文件夹
	存放一些列启动文件(当启动文件很少 或者只有一个的时候 也可以直接写在外面(根目录下就行))
    start.py
    
conf 文件夹
	存放一系列配置文件
    settings.py(一般情况下 该文件内的变量名都是大写)
    
lib 文件夹
	存放公共的功能
    common.py
    
db 文件夹
	存放数据相关文件
    userinfo.txt
    
log 文件夹
	存放日志记录文件
    log.txt
    
core 文件夹
	存放项目核心代码文件
    src.py
    
readme文件(一般为txt文本)
	内部是说明相关信息内容(类似于说明书 广告 章程...)
    
requirements.txt
	内部是存放项目所需的第三方模块及版本号

image

正则表达式

# 正则表达式是一门独立的语言 跟其他的编程语言都没有关系
'''如果想在python中使用正则 需要借助于内置模块 re '''

# 什么是正则表达式
	利用一些特殊符号的组合去字符串中筛选出符合条件的数据
    

eg:网站用户注册
    1.必须是11位
    2.必须是纯数字
    3.必须符合手机号的排布  15 16 18 19
    
# 常规写法
while True:
    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
while True:
    phone_number = input('please input your phone number : ')
    if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
            print('是合法的手机号码')
    else:
            print('不是合法的手机号码')

image

正则表达式之字符组

# 特征是使用中括号括起来 字符串默认只能单个单个的字符匹配
[0123456789]  # 匹配0到9之间的任意一个数字(一定不要加空格)
	简写 [0-9]
    
[a-z]  # 匹配小写字母 a到z 中间的任意一个字母
[A-Z]  # 匹配大写字母 A到Z 中间的任意一个字母
[A-Za-z0-9]  # 匹配所有大小写字母与数字(不能加空格隔开)

image

正则表达式之特殊符号

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

image

正则表达式之量词

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

*	重复零次或者更多次
+	重复一次或更多次
?	重复零次或一次
{n}	重复n次
{n}	重复n次或更多次
{n,m} 重复n到m次
'''正则表达式中的量词 默认是"贪婪匹配(默认要最多的)"'''

image

正则表达式之贪婪匹配与非贪婪匹配

# 待匹配的字符串
	<script>123</script>
# 正则表达式
	<.*>  # 匹配结果 <script>123</script> (按照第一个 < 开头 最后一个 > 结尾)
    '''默认贪婪匹配'''
    
# 将贪婪匹配变为非贪婪  只需要在量词的后面加问号即可
<.*?>  # 匹配结果 <script> </script> (按照 < 开头 > 结尾 走完整个字符组 但只会匹配条件范围内的)  
	'''非贪婪匹配  尽可能少的匹配 结束条件由左右两边共同决定'''

image

posted @ 2021-11-24 17:22  Deity_JGX  阅读(93)  评论(0)    收藏  举报