正则表达式,模块
^[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>123script>
?
<.*?>
?
# 加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串
.*?的用法
?
'''
. 是任意字符
* 是取 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('(.*?)
', data)
address_list = re.findall("(.*?)
", data)
email_list = re.findall("(.*?)
", data)
phone_list = re.findall("(.*?)
", 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)) #
#
# 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)