Python第二阶段学习week5总结

Python第二阶段学习 - week5总结

一. 思维导图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIGQu3vZ-1635123476186)(E:\WHY\Python2106\MDFiles\思维导图\Python week 5.png)]

二. 正则表达式

1)相关函数
函数说明
match(pattern, string, flags=0)用正则表达式匹配字符串 成功返回匹配对象 否则返回None
fullmatch(pattern, string, flags=0)检查字符串是否与正则表达式完全匹配
search(pattern, string, flags=0)搜索字符串中第⼀次出现正则表达式的模式 成功返回匹配对象 否则返回None
findall(pattern, string,flags=0)查找字符串所有与正则表达式匹配的模式 返回字符串的列表
finditer(pattern, string,flags=0)查找字符串所有与正则表达式匹配的模式 返回⼀个迭代器
compile(pattern, flags=0)编译正则表达式返回正则表达式对象
sub(pattern, repl, string,count=0, flags=0)用指定的字符串替换原字符串中与正则表达式匹配的模式 可以用count指定替换的次数
re.I / re.IGNORECASE忽略大小写匹配标记
2)元字符
符号解释
^字符串的开始
$字符串的结束
\d数字
\D非数字
\w英文大小写字母、数字、下划线
\W不是英文大小写字母、数字、下划线
\s空白字符
\S不是空白字符
.匹配任意的字符
*通配符 —> 模糊匹配
*?惰性匹配(尽可能短的匹配)
.*?表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复
?=内容后面是指定内容
?<=内容前面是指定内容
?!前瞻(向后面看):内容后面不能是指定内容,例如:?=\d —> 后面必须是数字;?!\d —> 后面不能是数字
?<!回顾(向前面看):内容前面不能是指定内容,例如:?!=\d —> 前面必须是数字;?!<\d —> 前面不能是数字
(exp)匹配exp并捕获到自动命名的组中
([^]exp)匹配exp(不包含[^]里的内容)并捕获到自动命名的组中
3)字符集
  1. [ ]:字符必须是字符集中的任意一个

[abc] —> abc任意取其一
[a-z0-9A-Z] —> 大小写字母、数字任意取其一

4)量词
符号解释
{N}前面的字符刚好出现N次
{N, M}最少N次,最多M次
{, M}最大M次,最少可以没有
*出现0次或任意多次
import re


content = """小明的手机号是13011223344,不是15800224567,也不是110。
大华135的手机号已经停用了,请拨打13899887766这个号码。
大华的银行存款没有1350099887766元。"""

# 方法一:通过search函数
matcher = re.search(r'(?<!\d)1[3-9]\d{9}(?!\d)', content)
while matcher:
    print(matcher.group())  # 将抽取的对象拿出来,提取与正则表达式匹配的内容
	content = content[matcher.end():]
	matcher = re.search(r'1[3-9]\d{9}', content)

# 方法二:通过findall函数
# findall:提取字符串中所有与正则表达式匹配的内容
items = re.findall(r'(?<!\d)1[3-9]\d{9}(?!\d)', content)  # findall
for item in items:
    print(item)

# 方法三:通过finditer函数
# finditer:提取字符串中所有与正则表达式匹配的内容
iter_obj = re.finditer(r'1[3-9]\d{9}', content)
for matcher in iter_obj:
	print(matcher.group())

三. 案例

1. Excel设置格式
import openpyxl
from openpyxl.cell.cell import Cell
from openpyxl.styles import Alignment, Font, Border, Side

cell = sheet['E256']
cell.value = '我爱你中国'
# 对齐方式
cell.alignment = Alignment(horizontal='center', vertical='center')

# 字体
cell.font = Font(name='微软雅黑', size=20, color='330099')

# 边框
side = Side(color='ff6600', style='mediumDashed')
cell.border = Border(left=side, right=side, top=side, bottom=side)

# 行高和列宽
sheet.row_dimensions[256].height = 50
sheet.column_dimensions['E'].width = 35
2. Excel绘制图表
from openpyxl.chart import BarChart, Reference

# 绘制柱状图
chart = BarChart()
chart.type = 'col'
chart.style = 10
chart.title = '期末成绩'

chart.y_axis.title = '分数'
chart.x_axis.title = '姓名'

data = Reference(workbook['成绩表'], min_col=2, min_row=1, max_row=6, max_col=4)
cats = Reference(workbook['成绩表'], min_col=1, min_row=2, max_row=6)

chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.shape = 4

workbook['成绩表'].add_chart(chart, 'A10')
3. 发送邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 创建SMTP_SSL对象
smtp_obj = smtplib.SMTP_SSL(host='smtp.qq.com', port=465)

# 登录
smtp_obj.login('1837918832@qq.com', 'authentication code')

# 基本信息
m_part = MIMEMultipart()
m_part['From'] = '1837918832@qq.com'
m_part['To'] = 'haoyuwang0412@hotmail.com'
m_part['Subject'] = 'Python办公自动化学习内容'

# 邮件正文
content = """
    发送邮件,邮件内容。
    
    祝,好!
    
    王浩宇 即日
"""

# 调用MIMEText添加内容
mime_text = MIMEText(content, 'plain', 'utf-8')   # plain纯文本
m_part.attach(mime_text)


# 添加附件
with open('resources/阿里巴巴2020年股票数据.xlsx', 'rb') as file:
    excel_file = MIMEText(file.read(), 'base64', 'utf-8')
    excel_file['content-type'] = 'application/vnd.ms-excel'
    excel_file['content-disposition'] = 'attachment; filename = "alibaba-stock.xlsx"'
    m_part.attach(excel_file)
    
# 发送邮件
smtp_obj.sendmail(
    from_addr='1837918832@qq.com',
    to_addrs='haoyuwang0412@hotmail.com',
    msg=m_part.as_string()
)

# 结束
smtp_obj.quit()
4. 发送短信
import random
import requests


def send_message(tel: str, message: str):
    """调用螺丝帽短信网关发短信
    :param tel: 接收短信的手机号
    :param message: 短信内容
    """
    resp = requests.post(
        url='http://sms-api.luosimao.com/v1/send.json',
        auth=("api", 'key值'),
        data={
            'mobile': tel,
            'message': message
        },
        timeout=3,
        verify=False
    )
    return resp.json()


def random_code(length=6):
    """生成随机(数字)验证码
    :param length: 验证码的长度
    """
    return ''.join(random.choices('0123456789', k=length))


code = random_code()
result = send_message('13548041193', f'您的验证码为:{code},请勿告诉他人!【Python小课】')

f random_code(length=6):
“”“生成随机(数字)验证码
:param length: 验证码的长度
“””
return ‘’.join(random.choices(‘0123456789’, k=length))

code = random_code()
result = send_message(‘13548041193’, f’您的验证码为:{code},请勿告诉他人!【Python小课】’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值