当前位置: 首页 > ai >正文

Python第八周作业

Python第八周作业

文章目录

  • Python第八周作业

1.用正则表达式匹配所有以test_开头且以.py结尾的文件名;
2.使用pickle序列化对象并保存到文件,再反序列化读取;
3.使用argparse模块编写命令行程序,接受--input--output参数;
4.用正则表达式提取字符串"价格:¥199.99" 中的数字部分;
5.解释re.findallre.search的区别,并举例说明;

1.用正则表达式匹配所有以test_开头且以.py结尾的文件名;

from pathlib import Path
import recurrent_path = Path(__file__).resolve().parentre_file = re.compile(r'^test_.*\.py$')# 通过循环方式获取文件
for file in current_path.iterdir():if file.is_file() and re_file.match(file.name):print(f"当前目录匹配文件的结果:{file.name}")# 遍历当前目录下的所有文件并存在列表中
re_files = [file.name for file in current_path.iterdir(
) if file.is_file() and re_file.match(file.name)]
print(f"当前目录匹配文件的结果:{re_files}")

2.使用pickle序列化对象并保存到文件,再反序列化读取;

import pickle
import os
from pathlib import Path# file_name = Path('.')/'user_info.pkl'
file_name = Path(__file__).resolve().parent/'user_info.pkl'
data = {'name': "Hooper",'age': 28,'classes': ['Python', 'Linux', 'GoLang']
}# 序列化写入文件
def write_file(file_name):with open(file_name, 'wb') as file:pickle.dump(data, file)print(f"序列化保存文件完成.文件名: {file_name}")# 反序列化读取文件
def read_file(file_name):if os.path.exists(file_name):with open(file_name, 'rb') as file:read_data = pickle.load(file)print("反序列化读取文件完成.")print(read_data)else:print(f"{file_name}文件不存在.")write_file(file_name)read_file(file_name)

3.使用argparse模块编写命令行程序,接受--input--output参数;

import argparse
from pathlib import Pathfile_name = 'ex_argparse.py'
current_path = Path(__file__).resolve().parent# 创建ArgumentParser对象
parser = argparse.ArgumentParser(file_name, description="这是一个demo脚本,支持添加--input及--output参数")# 添加参数
parser.add_argument('--input', type=str, help='输入文件路径')
parser.add_argument('--output', type=str, help='输出文件路径')# 解析命令行参数
args = parser.parse_args()
print(args)# 针对传入的参数进行脚本的处理
if args.input:print(f"输入文件:{args.input}")
else:print(f"未添加输入文件路径.请使用'python3 {current_path}/{file_name} -h' 获取帮助信息.")# 打印帮助# parser.print_help()if args.output:print(f"输出文件:{args.output}")
else:print(f"未添加输出文件路径.请使用'python3 {current_path}/{file_name} -h' 获取帮助信息.")# 打印帮助# parser.print_help()

4.用正则表达式提取字符串"价格:¥199.99" 中的数字部分;

import re
text_data = "价格:¥199.99"re_data = re.findall(r"\d+(?:\.\d+)", text_data)
# (?:\.\d+)作为一个分组,匹配包含小数点及小数点后面的数字
print(f"数字部分:{re_data}") 
# 输出结果: 数字部分:['199.99']

5.解释re.findallre.search的区别,并举例说明;

re.findall() 匹配全文,返回所有匹配的结果
re.search() 匹配全文;返回空值(None)或者第一个匹配的对象(Object);

示例:

import re
eg_data = "高3学生肯定学习过高2学生跟高1学生学习的内容"
f_list = re.findall(r"高\d学", eg_data)
s_list = re.search(r"高\d学", eg_data)print(f"findall:{f_list};\nsearch:{s_list}")# 输出结果:
# findall:['高3学', '高2学', '高1学'];
# search:<re.Match object; span=(0, 3), match='高3学'>
http://www.xdnf.cn/news/13597.html

相关文章:

  • ZeroTier+CCproxy+Proxifier实现内网穿透和流量转发
  • 让报表成为生产现场的“神经系统”,推动管理自动化升级
  • 第30节 Node.js C/C++ 插件
  • Appium+python自动化(二十一)- Monkey指令操作手机
  • Vue3+TypeScript实现访问者模式
  • PyTorch深度学习框架60天进阶学习计划-第57天:因果推理模型(二)- 高级算法与深度学习融合
  • ARM 和 x86_64是什么关系
  • 论文阅读:speculative decoding
  • 校赛2025迎新杯题解
  • 欧盟RED网络安全标准EN 18031-2的要求
  • 什么是序列化?反序列化? 场景使用? 怎么实现???
  • 「ECG信号处理——(17)基于小波熵阈值的R峰检测(与时域-频域-多尺度小波法对比)」2025年6月12日
  • Docker 安装 Oracle 12C
  • 大厂Java技术面试实录:从基础到架构,谢飞机的面试之旅
  • springboot+mybatis面试题
  • MySQL行锁、记录锁、间隙锁、临建锁、意向锁、表锁
  • 体育赛事直播平台的数据架构:从实时统计到深度洞察
  • 运放负反馈电路原理分析
  • 卡通幼儿园教育通用可爱PPT模版分享
  • 瑞芯微 MIPI D-PHY 接收器(RX)驱动学习笔记
  • 达梦数据库(DM)用户名大小写处理规则
  • MAC-苹果电脑专业卸载工具AppCleaner
  • C++ Vector深度解析:动态组的底层机制与实战指南
  • 无人机技术与低空经济的融合:探索未来
  • 桥接模式深度解析:Java设计模式实战指南与抽象实现分离架构设计
  • Mac中安装Anaconda、Anaconda基础命令、Pycharm结合Anaconda,看这一篇就够啦!
  • 接口实现类向上转型和向上转型解析
  • 嵌入式学习笔记 - C语言中结构体的定义,以及结构体变量的内存空间的分配
  • Ubuntu24.04 onnx 模型转 rknn
  • 离线部署openstack 2024.1 glance