python刷题-关于日期、正则表达式的题

news2025/1/10 17:20:45

目录标题

      • 1、计算日期范围内的所有日期
      • 2、将Unix时间戳转换为格式化日期
      • 3、计算日期数据周同比
      • 4、正则表达式判断字符串是否是日期
      • 5、从文本中提取手机号码 --正则表达式
      • 6、批量提取网页上的手机号码
      • 7、自动提取电子邮箱地址
      • 8、验证用户密码是否规范-re.findall
      • 9、提取商品价格
      • 10、给文章中手机号打马赛克效果-re.sub

1、计算日期范围内的所有日期

思路:用一个函数实现此功能
函数中,一个空列表用来储存,while循环,开始日期+间隔日期都变成日期类型

import datetime
def get.date_range(begin_date,end_date):
	date_list = []
	while begin_date<=end_date:
		date_list.append(begin_date)
		begin_date_o = datetime.datetime.strptime(begin_date,'%Y-%m-%d')
		timedelta = datetime.timelta(days=1)
		bgin_date  = (begin_date_o+timedelta).strftime('%Y-%m-%d')
	return date_list

begin_date = "2022-12-30"
end_date = "2023-01-4"
date_list = get.date_range(begin_date,end_date)
print(date_list)

2、将Unix时间戳转换为格式化日期

处理时间戳:datetime.datetime.fromtimestamp()
在这里插入图片描述

import datetime
unxi_time = 1620747224
datetime_obj = datetime.datetime.fromtimestamp(unix_time)
datetime_str = datetime_obj.strftime("%Y-%m-%d")
print(datetime_str)

3、计算日期数据周同比

同比:(后一个数-前一个数)/前一个数字
sales.txt内容:
日期 销售额
2022-12-11 96
2022-12-12 87
.。。。。

思路:
先将txt中数据读取到字典中,再处理
要获得日期对应的前7天日期–get_diff_days函数
从字典中取对应销售额,进行计算周同比

date_sale = {}
is_first_line = True
with open("./sales.txt") as fin:
	for line in fin:
		if is_first_line:
			is_first_line = False  #设置一个开关,判断是否是首行
			continue
		line = line[:-1]
		date,sale_number = line.split("\t") #中间的间隔是一个tab键\t
		date_sale[date] = float(sale_number) 
#先将txt中数据读取到字典中,再处理

#返回date的days天前的日期
def get_diff_days(date,days):
	curr_date = datetime.datetime.strptime(date,"%Y-%m-%d")
	timedelata = datetime.timedelta(days=-days)
	return (curr_date+timedelata).strftime("%Y-%m-%d")  #

for date,sale_number in date_sale.items():
	date7 = get_diff_days(date,7)  #获取7天前的日期
	sale_number7 = date_sale.get(date7,0) #days7对应的销售额,若不存在则取0
	if sale_number7 == 0:
		print(date,sale_number,0)
	else:
		weak_diff = (sale_number-sale_number7)/sale_number7
		print(date,sale_number,date7,sale_number7,weak_diff)

4、正则表达式判断字符串是否是日期

在这里插入图片描述

import re
def date_is_right(date):
	return re.math("\d{4}-\d{2}-\d{2}",date) is not None
	#如果没匹配到会返回None,如果匹配到了会返回一个东西,所以写成is not None只会返回True和False

date1 = "2022-05-20"
date2 = "202-05-20"
print(date1,date_is_right(date1))
print(date2,date_is_right(date2))

在这里插入图片描述

5、从文本中提取手机号码 --正则表达式

re.findall(文本,正则表达式)

content="百日以上就123,黄河12343567入海量,13123456789,13789872345"
import re
#手机号的模型:1开头,总共11位,第二位的数字3-9
pattern = r"1[3-9]\d{9}"
#r让\d不用转义,\d指数字
results =  re.findall(pattern,content)
print(results)   #输出:['13123456789', '13789872345']

6、批量提取网页上的手机号码

import re
pattern = r"1[3-9]\d{9}"
file_cont = ""
with open("./wenben.txt") as fin:
	file_cont = fin.read()  #利用read把文本内容全部拿出来
	
results = re.findall(file_cont,pattern)
print(len(results))
for result in results:
	print(result) #一行一个这样的输出

7、自动提取电子邮箱地址

#邮箱python666@163.com
import re
pattern = re.compile(r"""
	[a-zA-Z0-9_-]+
	@
	[a-zA-Z0-9]+
	\.
	[a-zA-Z]{2,4}
	""",re.VERBOSE)
#三引号和re.VERBOSE都是指允许多行编写
#+指一次及以上,{2,4}指2-4次

cont = "百日以上就123,黄河12343567入海量,python666@163.com"
results = re.findall(cont,pattern)
print(len(results))
for result in results:
	print(result) #一行一个这样的输出

8、验证用户密码是否规范-re.findall

长度–len
包含特殊字符–re.findall()

#密码规范:长度[6,20]之间,至少一个小写字母、一个大写字母、1个数字、一个特殊字符
import re
def check_password(password):
	if not 6 <= len(password) <=20:
		return False,"密码个数必须6-20"
	if not re.findall(r"[a-z]",password):
		return False,"必须包含至少1个小写字母"
	if not re.findall(r"[A-Z]",password):
		return False,"必须包含至少1个大写字母"
	if not re.findall(r"[0-9]",password):
		return False,"必须包含至少1个数字"
	if not re.findall(r"[^a-zA-Z0-9]",password):
		return False,"必须包含至少1个特殊字符"
	return True,None

print("Helloworld#666",check_password("Helloworld#666"))
print("Helloworld#",check_password("Helloworld#"))
print("elloworld#666",check_password("elloworld#666"))
print("Helloworld666",check_password("Helloworld666"))

在这里插入图片描述

9、提取商品价格

正则中括号的使用
mach.group(1)

content = """
小米上街买菜
买了1斤黄瓜花了8元;
买了2斤葡萄花了13.5元;
买了3斤白菜花了5.4元;
"""
#想从中提取出:(1、黄瓜、8)(2、葡萄、13.5)(3、白菜、5.4)
import re
for line in content.split("\n"):
	pattern =r"(\d)斤(.*)花了(\d+(\.\d+)?)元"
	#\d是数字,.*是多个字符,?是可有可无.最后给要提取的内容都打上括号
	match = re.search(pattern,line)
	if match:
		print(f"{mach.group(1)}\t{mach.group(2)}\t{mach.group(3)}")#输出括号1,2,3内容
		#print(match.groups())
	print(line)

在这里插入图片描述

10、给文章中手机号打马赛克效果-re.sub

文本中满足某格式的内容被替换:
re.sub(被替换满足的格式,要替换成的格式,文本内容)

content = """
白日依山19878923487尽,黄河入14896787652海流.
欲穷千1234里目,更上一15768082341层楼.
"""
#将内容中满足手机号格式的内容换成*
import re
pattern = r"(1[3-9])\d{9}" #将前两个数字括号起来了
print(re.sub(pattern,r"\1****",content)) #\1指前面的第一个括号中内容

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ELK简介

什么是ELKE: Elasticsearch全文搜索引擎L: logstash日志采集工具K: kibana ES的可视化工具ELK是当今业界非常流行的日志采集保存和查询的系统我们编写的程序,会有很多日志信息,但是日志信息的保存和查询是一个问题IDEA控制台是一个临时显示的位置,我们可以将它保存在文件中但是…

Jetpack架构组件库:Room

Room Room是一款轻量级orm数据库&#xff0c;本质上是一个基于SQLite之上的抽象层。它通过注解的方式提供相关功能&#xff0c;编译时自动生成实现Impl&#xff0c;相比纯 SQLite 的API使用方式更加简单。另外一个相比于SQLite API的优势是&#xff1a;它会在编译时检查 SQL 语…

SpringBoot+Vue项目在线视频教育平台

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

网络原理之HTTP/HTTPS、TCP、IP四层协议栈

文章目录一、应用层&#xff08;一&#xff09;xml协议&#xff08;二&#xff09;json协议&#xff08;三&#xff09;protobuffer协议&#xff08;四&#xff09;HTTP协议1. 抓包工具&#xff0c;fiddler2. HTTP报文格式3. HTTP请求(Request)&#xff08;1&#xff09;URL基本…

【VisualBasicApplication】Excel编程

VBAExcel的宏与VBA宏的录制宏的启动运行快捷键运行宏&#xff1a;使用Excel对象运行宏*VBA的数据类型字符串&#xff08;String&#xff09;整形&#xff08;Integer&#xff09;和长整形&#xff08;Long&#xff09;单精度浮点型&#xff08;Single&#xff09;和双精度浮点型…

3.mysql查询必备sql语句

文章目录1.条件查询 where2. 通配符与模糊查询3. 映射4. 排序 order_by5. 取部分 limit 和offset6. 分组 group by7.左右连表 left outer join ... on8. 联合查询 union1.条件查询 where 表内容&#xff1a; import pymysqlconn pymysql.connect(host127.0.0.1,port3306,u…

向QAbstractItemView子类如:QTreeView、QTableView等子项单元格插入窗体小部件的功能实现(第2种方法)

1.前言工作中经常会遇到这样的需求&#xff1a;向QAbstractItemView子类如QTreeView、QTableView单元格插入窗体小部件&#xff0c;如&#xff1a;进度条、按钮、单行编辑框等。下面链接的系列博文就是讲解如何实现该功能的。《向QAbstractItemView子类如:QTreeView、QTableVie…

LeetCode 2500. 删除每行中的最大值

给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的值&#xff0c;删除其中任何一个。 将删除元素中的最大值与答案相加。 注意 每执行一次操作&#…

行为型模式-状态模式

1.概述 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状态&#xff0c;运行状态。每一种状态改变&#xff0c;都有可能要根据其他状态来更新处理。例如&#xff0c;如果电梯门现在处于运行时状态&#xff0c;就不能…

时序数据处理中的拟合问题

对于深度学习或机器学习模型而言,我们不仅要求它对训练数据集有很好的拟合(训练误差),同时也希望它可以对未知数据集(测试集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。度量泛化能力的好坏,最直观的表现就是模型的过拟合(overfitting)和欠拟合(…

一起Talk Android吧(第四百七十五回:渐变类视图动画)

文章目录使用方法属性介绍示例代码共用属性各位看官们大家好&#xff0c;上一回中咱们说的例子是"如何使用视图动画",这一回中咱们说的例子是"渐变类视图动画"。闲话休提&#xff0c;言归正转&#xff0c;让我们一起Talk Android吧&#xff01; 看官们&am…

移动web动画

移动web动画动画动画属性鼠标经过暂停动画多组动画鼠标经过暂停动画多组动画动画 动画最大的特点可以不用鼠标触发&#xff0c;自动的&#xff0c;反复的执行某些动画。 动画使用分为定义和调用&#xff1a; 定义&#xff1a; /* 1. 定义的动画 */ keyframes dance {from {tr…

恶意代码分析实战 12 对抗反汇编

12.1 Lab15-01 问题 这个二进制程序中使用了何种对抗反汇编技术&#xff1f; 首先&#xff0c;使用IDA载入该文件。 我们可以看到这个程序在地址0040100E处存在一个对抗反汇编技术的痕迹。 eax总是被置为零&#xff0c;jz跳转总是被执行。所以我们认为这一行是假冒的call指…

Docker的架构设计

前面我们研究了Docker容器的本质是一个特殊的进程&#xff0c;那么这个特殊进程是如何创建、如何终止的那&#xff1f;也就是说是谁来管理这个容器进程的生命周期的那&#xff1f;在mac操作系统中我们可以通过活动监视器来观察操作系统里面有哪些进程&#xff0c;以及通过活动监…

推荐算法:序列召回

目录 序列召回&#xff08;一&#xff09; 序列召回&#xff08;二&#xff09; 序列召回&#xff08;三&#xff09; 序列召回&#xff08;四&#xff09; 序列召回&#xff08;一&#xff09; 源自论文&#xff1a;http://arxiv.org/abs/1511.06939 基于GRU的序列召回中通过…

青训营项目实战1

项目实战 实现掘金青训营报名页码的后端部分 需求描述 展示话题&#xff08;标题、文字描述&#xff09;和回帖列表 不考虑前端页面实现&#xff0c;仅实现一个本地web服务 话题和回帖数据用文件存储 附加要求&#xff1a; 支持发布帖子 本地id生成要保证不重复 append文件 更…

【ONE·C || 指针】

总言 C语言&#xff1a;指针的使用介绍。 文章目录总言1、指针初阶1.1、是什么1.2、指针和指针类型1.2.1、指针类型介绍1.2.2、作用一&#xff1a;指针解引用1.2.3、作用二&#xff1a;指针整数1.3、野指针1.3.1、野指针是什么1.3.2、为什么存在野指针1.3.3、如何避免野指针1.4…

ReentrantLock从入门到踢门

1. ReentrantLock是什么Lock提供了比synchronized方法和语句更广泛的锁定操作。 更灵活的结构化&#xff0c;并且支持多个相关联的对象Condition。它实现了Lock、Serializable序列化接口。图1 ReentrantLock实现接口图1.1 Lock1.1.1 lock// 获取锁 void lock();1.1.2 lockInter…

SpringMVC -->ant风格的路径 -->占位符 -->获取请求参数 -->@RequestParam

文章目录SpringMVC支持ant风格的路径SpringMVC支持路径中的占位符SpringMVC获取请求参数通过servletAPI获取通过控制器方法的形参获取请求参数RequestParam注解处理请求参数和控制器方法的形参的映射关系代码样例SpringMVC支持ant风格的路径 &#xff1f;&#xff1a;表示任意的…

爆火微信公众号自定义早安推送,爱她就给她推送

为女朋友打造专属早安推送先上截图电脑端看的效果手机端看的效果一、申请微信公众号测试号二、让他/她扫码关注测试公众号三、新增模板消息四、天气API五、使用 leancloud 部署云函数六、源代码先上截图 电脑端看的效果 手机端看的效果 一、申请微信公众号测试号 https://mp.w…