绝对导入和相对导入
绝对导入:严格按照文件存储路径导入py文件中查找模块。
绝对导入的两种解决方式:1. .append()添加路径,2.手动添加
相对导入:句点符(。).表示当前文件路径,..表示上一层文件路径,能够打破以执行文件为准的规则,只考虑两个文件之间的位置,相对导入只能用在模块文件中,不能在执行文件中使用。
软件开发目录规范
plugin | 插件 |
bin文件夹 | 存放启动文件 |
conf文件夹 | 存放配置文件(通常该文件内的变量名都是大写,参考常量) |
lib文件夹 | 存放公共的功能common.py |
db文件夹 | 存放数据相关的文件 |
log文件夹 | 日志记录文件 |
core文件夹 | 存放核心代码文件src.py |
readme.txt | 软件说明,广告等 |
requirements.txt | 存放项目所需的第三方模块及版本号 |
正则表达式模块
什么是正则表达式:用特殊符号去字符串中筛选出符合条件的数据
写法:import re
import re
#写一个验证身份证是否准确的功能
count=0
id_card=input('请输入你的身份证号码: ')
if len(id_card)==18:
if id_card.count('x')<2:
print('恭喜已登陆成功')
else:
print('请输入正确的身份证号码')
else:
print('身份证字符串有18位')
#正则表达式验证身份证号是否准确
card=input('请输入你的身份证号码: ')
if re.match('^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$',card):
print('身份证号码正确')
else:
print('请输入正确的身份证号码')
字符组:特征使用中括号括起来,字符串默认只能单个字符匹配
【0-9】=0123456789
【a-z】=26个字符小写
【A-Z】=26个字符大写
也可以拼写在一块儿【0-9A-Za—z】
特殊符号:也默认只能单个字符匹配
. | 匹配换行符以外的任意字符 |
\d | 匹配数字 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式也表示一个组 |
[...] | 匹配字符组中的字符 |
[^...] | 匹配除了字符组中字符的所有字符 |
量词:
1.表达式在没有量词修饰的情况下 都是单个匹配
2.量词必须结合(字符串、特殊符合等)一起使用 不能单独出现
3.量词只能影响前面的一个表达式(ab+ 只能影响b)
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
"""
正则表达式中的量词默认都是'贪婪匹配'
"""
贪婪匹配和非贪婪匹配
# 带匹配的字符串
<script>123</script>
# 正则表达式
<.*> '''默认贪婪匹配 尽可能多的匹'''
# 将贪婪变为非贪婪 只需要在量词的后面加问号即可
<.*?> '''非贪婪匹配 尽可能少的匹 结束条件有左右两边决定'''