博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2021-11-24 16:15  ~sang  阅读(44)  评论(0)    收藏  举报

绝对导入与相对导入

***在程序中涉及到多个文件之间导入模块的情况,一律按照执行文件所在的路径为准***

绝对导入

  始终按照执行文件所在的sys.path查找模块

相对导入

  ***

  句点符(.)

    .表示当前文件路径

    ..表示上一层文件路径

  ***

  能够打破始终以执行文件为准的规则,只考虑两个文件之间的位置

  # 相对导入只能用在模块文件中,不能在执行文件中使用

import os

os.path.dirname(__file__) # 当前路径

os.path.dirname(os.path.dirname(__file__)) # 上一层路径

软件开发目录规范

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

bin文件夹

  存放一系列启动文件(当启动文件很少或者只有一个的时候也可以直接写在外面)

    start.py

conf文件夹

  存放一系列配置文件

    settings.py(一般情况下该文件内的变量名都是大写)

lib文件夹

  存放公共的功能

    common.py

db文件夹

  存放数据相关文件

    userinfo.txt

log文件夹

  存放日志记录文件

    log.txt

core文件夹

  存放项目核心代码文件

    src.py

readme文件

  存放说明相关信息(类似于说明书、广告、章程)

requirements.txt

  存放项目所需的第三方模块及版本号

正则表达式

***

正则表达式是一门独立的语言,跟其他编程语言都没有关系!!!

如果想在python代码中使用正则,需要借助于内置模块re

***

什么是正则表达式?

  利用一些特殊符号的组合去字符串中筛选出符合条件的数据

eg:手机号码验证

import re
phone_number=input('please input your phone number:')
# 以13或14或15或18开头的0-9任意9个数字结尾
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
    print('是合法的手机号')
else:
    print('不是合法的手机号')

eg:身份证号码验证

import re
id_number=input('please input your id:')
# 17位数字加任意一数字或x或者15位数字
if re.match('\d{17}[\d|x]|\d{15}',id_number):
    print('输入身份证号码合法')
else:
    print('输入身份证号码非法')

字符组

特征是使用中括号括起来的,字符串默认只能单个单个字符匹配

[0123456789] # 匹配0到9之间任意一个数字,可简写为[0-9]

[a-z] # 匹配小写字母a到字母z其中任意一个字母

[A-Z] # 匹配大写字母A到字母Z其中任意一个字母

[a-zA-Z0-9] # 匹配所有的数字,小写大写字母

特殊符号

特殊符号默认也只能单个单个字符匹配

.   匹配除换行符以外的任意字符

\d   匹配数字

^  匹配字符串的开始

$  匹配字符串的结尾

    ***^与$组合使用可以精准限制要查找的数据***

a|b  匹配字符a或字符b

()  匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配,单纯的分组而已)

[...]  匹配字符组中的字符

[^...]  匹配除了字符组中字符的所有字符

量词

1.表达式在没有量词修饰的情况下,都是单个单个匹配

2.量词必须结合(字符串、特殊符号等)一起使用,不能单独出现

3.量词只能影响前面的一个表达式(ab+ 只能影响b)

*  重复零次或更多次

+  重复一次或更多次

?  重复零次或一次

{n}  重复n次

{n,}  重复n或更多次

{n,m}  重复n到m次

***正则表达式中的量词默认都是‘贪婪匹配’***

贪婪匹配与非贪婪匹配

# 带匹配的字符串
<script>123<script>
# 正则表达式
<.*> """默认贪婪匹配,尽可能多的匹"""
结果:<script>123<script>
# 将贪婪变为非贪婪,只需要在量词的后面加问号即可
<.*?> """非贪婪匹配,尽可能少的匹,结束条件由左右两边决定"""
结果:<script><script>