正则表达式,模块

正则表达式

^[1-9]\d{13,16}[0-9x]$

^[1-9]\d{13,16}[0-9x]$

^[1-9]\d{14}(\d{2}[0-9x])?$

^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

贪婪匹配

# 贪婪匹配就是尽可能多的匹配
<script>123</script>

<.*?>

# 加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串
.*?的用法

'''
. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x

就是取前面任意长度的字符,直到一个x出现
'''

re模块

在Python中要想试用正则表达式,就要借助于re模块

import re

ret = re.findall('a', 'eva egon yuan')  # 返回所有满足匹配条件的结果,放在列表里
print(ret) #结果 : ['a', 'a']

ret = re.search('a', 'eva egon yuan').group()
print(ret) #结果 : 'a'
# 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
# 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

ret = re.match('a', 'abc').group()  # 同search,不过尽在字符串开始处进行匹配
print(ret)
#结果 : 'a'

爬去红牛官网数据

with open('redbull.txt', 'r', encoding='utf-8') as f:
   data = f.read()

title_list = re.findall('<h2>(.*?)</h2>', data)
address_list = re.findall("<p class='mapIco'>(.*?)</p>", data)
email_list = re.findall("<p class='mailIco'>(.*?)</p>", data)
phone_list = re.findall("<p class='telIco'>(.*?)</p>", data)

all_list = list(zip(title_list, address_list, email_list, phone_list))

for item in all_list:
   print("""
      公司:%s
      地址:%s
      邮箱:%s
      电话:%s
  """ % (item[0], item[1], item[2], item[3]))

time模块

time.sleep(3)
time.time() # 秒数

'''
三种格式:
1. 时间戳
2. 结构化时间
3. 格式化时间
'''

datetime模块

import datetime


# print(datetime.datetime.today())
# print(datetime.datetime.now())
# print(datetime.date.today())
res=datetime.datetime.today()
# print(res.year)
# print(res.month)
# print(res.day)
# print(res.hour)
# print(res.second)
# print(res.minute)
# print(res.weekday())
# print(res.isoweekday())

# 重点 时间差

# timedelta对象
# 可以对时间进行运算操作

# 获得本地日期 年月日
tday = datetime.date.today()
# 定义操作时间 day=7 也就是可以对另一个时间对象加7天或者减少7点
tdelta = datetime.timedelta(days=3)

print(tday + tdelta)

"""
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象

验证:

"""

# 定义日期对象
# now_date1 = datetime.date.today()
# # 定义timedelta对象
lta = datetime.timedelta(days=6, hours=10, minutes=20, microseconds=1111,weeks=4)
# now_date2 = now_date1 + lta # 日期对象 = 日期对象 +/- timedelta对象
# print(type(now_date2)) # <class 'datetime.date'>
#
# print(now_date2)
# lta2 = now_date1 - now_date2 # timedelta对象 = 日期对象 +/- 日期对象
# print(lta2)

# 小练习 计算举例今年过生日还有多少天
birthday = datetime.date(2022, 12, 21)
now_date = datetime.date.today()
days = now_date - birthday

print('生日:{}'.format(birthday))
print('今天的日期:{}'.format(tday))
print('距离生日还有/{}天'.format(days))

import datetime

# dt_today = datetime.datetime.today()
# dt_now = datetime.datetime.now()
dt_utcnow = datetime.datetime.utcnow()  # UTC时间与我们的北京时间cha ju
print(dt_utcnow)

random模块


def get_code(n=4):
   code = ''
   for i in range(n):
       num = str(random.randint(0, 9))
       '''
          chr:
          ord
      '''
       # A-Z
       upper = chr(random.randint(65, 90))  # a:97

       # a-z
       lower = chr(random.randint(97, 122))

       code += random.choice([num, lower, upper])
   return code
code = get_code(4)
code1 = get_code(8)
code2 = get_code(10)
print(code)

 

posted @   shangxin_bai  阅读(262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示