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

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学'>

相关文章:

  • windows下载postman后安装失败,提示installation has failed,解决方案亲测有效
  • C# 动态管理控件和事件,批量查询管理同类控件
  • 通信网络编程2.0——JAVA
  • ES集群的故障转移
  • 工厂模式demo
  • qemu-guest-agent详解
  • Python训练营-Day29-复习日
  • 应对人口老龄化:智慧养老驱动高质量发展新范式
  • 遍历对象属性,for...in和Object.keys到底用哪个?
  • 网络安全之RCE简单分析
  • C#事件基础模型代码
  • Java面试避坑指南:牛客网最新高频考点+答案详解
  • Verilog基础:$timeformat系统任务的使用
  • 火山引擎扣子的具体作用
  • docker 02网络
  • Java从入门到精通 - 面向对象高级(一)
  • HALCON第五讲-> 形状匹配
  • java枚举 注解 异常 常用类
  • Kubernetes安全机制深度解析(一):从身份认证到资源鉴权
  • js将object转换成string
  • 政府网站建设与管理/seo引擎优化专员
  • 网站建设服务价格/新野seo公司
  • 绥芬河建设工程网站/荥阳网络推广公司
  • 怎么做免费网站推/百度竞价推广常用到的工具
  • 龙华营销型网站设计/武汉seo诊断
  • 建站行业/新媒体seo培训