Bootstrap5 实例选项卡切换
Bootstrap5 实例选项卡切换
选项卡切换
HOME
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Bootstrap5 实例选项卡切换
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
#-*- coding:utf-8 -*-
title.decode(‘utf-8’)
page_req.text.encode(‘iso-8859-1’).decode(‘gbk’)
选择所有的h2下的文本
//h2/text()
获取所有的a标签的href
//a/@href
获取html下的head下的title的文本
/html/head/title/text()
获取html下的head下的link标签的href
/html/head/link/@href
文件中所有以https?://开头,以.jpg|.png|.jpeg结尾的字符串
二、尝试过程
1)
自然想到正则表达式r'(https?://.*?.jpg|https?://.*?.png|https?://.*?.jpeg)简化书写为r'(https?://.*?\.(?:jpg|png|jpeg)
匹配结果:[‘http://sdsdsdadadsdsdsddsdsdawwii,https://sdsdoijcjz.jpg’]发现结果并非我们想要的,仔细查看,结果中出现了,或者”等符号,因此需要将这些字符去除
2)更改正则表达式为r'(https?://[^ “,]*?\.jpg|https?://[^ “,]*?\.png)’ 简化书写为r'(https?://[^, “]*?\.(?:jpg|png|jpeg))
匹配结果 : [https://sdsdoijcjz.jpg’]
# 输入2个日期
date1 = “2022.05.11 13:30:00”
date2 = “2022.05.10 12:00:00”
# 将输入的日期转换为“datetime.datetime”类型
# 由于日期的类型是字符串,因此不能直接进行计算,会报错
date1 = datetime.strptime(date1, “%Y.%m.%d %H:%M:%S”)
date2 = datetime.strptime(date2, “%Y.%m.%d %H:%M:%S”)
print(” date1:”, date1, “\n” ,”date2:”, date2)
print(” 2个日期的类型分别是:\n”, type(date1), type(date2))
# 计算时间差:时间差的类型为“datetime.timedelta”类型
duration = date1 – date2
duration
由于计算的时间差需要精确到小时/分钟/秒等,因此需要将日期类型转换为“datetime.datetime类型”后进行计算。
运算得到的时间差值,其类型为“datetime.timedelta”,包括2部分:days: 多少天,seconds: 多少秒。
时间差值的提取:天数(days)= durations.days; 秒数(seconds)= durations.seconds,
可根据提取出来的秒数再换算为多少小时或多少分钟。
2.1 timedelta()函数的简介
timedelta()函数的构造:
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
对参数设定具体的值,达到计算的要求,如:
设定:days=1 – 在原有时间上增加1天;
设定:minutes=-30 – 在原有时间上减少30分钟
2.2 timedelta()函数的使用
# 1. timedelta()的基本用法
dt1 = datetime(2022, 5, 12, 8, 30, 0)
dt2 = dt1 + timedelta(days = 1)
dt3 = dt1 + timedelta(minutes = -30)
print(“dt1:”, dt1)
print(“dt2:”, dt2)
print(“dt3:”, dt3)
方法一:通过自定义线程类,继承Thread类,并复写run方法,在r...
python 字典合并
dict1={1:[1,11,111],2:[2,22,222]}
dict2={3:[3,33,333],4:[4,44,444]}
合并两个字典得到类似
{1:[1,11,111],2:[2,22,222],3:[3,33,333],4:[4,44,444]}
方法1:
dictMerged1=dict(dict1.items()+dict2.items())
方法2:
dictMerged2=dict(dict1, **dict2)
方法2等同于:
dictMerged=dict1.copy()
dictMerged.update(dict2)
或者
dictMerged=dict(dict1)
dictMerged.update(dict2)
方法2比方法1速度快很多
这是一个正则表达式,可用于匹配所有英文字母数字字符、日文片假名、平假名、多字节字母数字(hankaku 和 zenkaku)和破折号:
常用正则表达式
^[0-9]*$ 数字
^\d{m,n}$ m-n位的数字
^[0-9]+(.[0-9]{2})?$ 有两位小数的正实数
^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ 浮点数
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 手机号码
/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/ Email地址
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 域名
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ URL
^\d{15}|\d{18}$ 身份证号(15位、18位数字)
^\d{4}-\d{1,2}-\d{1,2} 日期格式
[\u4e00-\u9fa5] 中文字符的正则表达式
^[ァ-ヶー]{1,45}$日语的正则表达式
/x3130-/x318F (韩文
/xAC00-/xD7A3 (韩文)
[1-9][0-9]{4,} 腾讯QQ号
[1-9]\d{5}(?!\d) 中国邮政编码
^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]) .(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$ IP地址
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$ xml文件
^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$正浮点数
密码必须包含:半角数字、大写英文,小写英文、标点符号这4类中至少3种: ^(?![0-9a-z]+$)(?![0-9A-Z]+$)(?![0-9!#\$%&=|\-\^@\[:\]\,\./\+\?]+$)(?![a-z!#\$%&=|\-\^@\[:\]\,\./\+\?]+$) (?![a-zA-Z]+$)(?![A-Z!#\$%&=|\-\^@\[:\]\,\./\+\?]+$)[a-zA-Z0-9!#\$%&=|\-\^@\[:\]\,\./\+\?]{8,16}$(特殊字符根据需要添加,个别字符需要转译)
/[一-龠]+|[ぁ-ゔ]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+|[々〆〤]+/u
在python中使用json主要有四个方法(json故格式的数据使用的一定是双引号):
1、dumps()#将python对象转化为json字符串
import json
data={‘name’:’徐雨杰’,’age’:20}
f=json.dumps(data)
print(f)
结果:
{“name”: “\u5f90\u96e8\u6770”, “age”: 20}
2、loads()#将json字符串转化为python对象
import json
data={‘name’:’徐雨杰’,’age’:20}
f=json.dumps(data)
print(f)
f1=json.loads(f)
print(f1)
3、dump()#将python内置类型序列转化为json对象后写入文件
import json
data={‘name’:’徐雨杰’,’age’:20}
with open(“js.txt”,”w”) as f:
#可以直接命名为后缀值.json的文件
json.dump(data,f)
f.close()
运行该程序之后在当前目录下会有相应的文件
4、load()#读取文件中json形式的字符串元素转化为python类型
import json
with open(“js.json”,”r”) as f:
print(json.load(f))
f.close()
python将字典内容写入json文件的方法:我们可以先使用json.dumps()函数将字典转换为字符串;然后再将内容写入json即可。json.dumps()函数负责对数据进行编码。
字典内容写入json时,需要用json.dumps将字典转换为字符串,然后再写入。
json也支持格式,通过参数indent可以设置缩进,如果不设置的话,则保存下来会是一行。
无缩进
json_str = json.dumps(test_dict)
with open(‘test_data.json’, ‘w’) as json_file:
json_file.write(json_str)
有缩进版本
json_str = json.dumps(test_dict, indent=4)
with open(‘test_data.json’, ‘w’) as json_file:
json_file.write(json_str)
os.path.exists():
os即operating system(操作系统),Python 的 os 模块封装了系统的文件和文件路径。
os.path模块主要用于文件的属性获取,exists是“存在”的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。对于系统内的所有文件及其路径,都可以进行判断。
返回结果为:True或者False
os.path.join():
os.path.join(“父集”,“子集”)
返回的结果为:
父集\子集’
含义为把“子集”添加到“父集”路径之后。
os.makedirs():
os.makedirs(“子集”):
在当前路径下创建文件夹:子集
也可以写绝对路径:
os.makedirs(‘C:\Users\DELL\Desktop\子集)
在桌面创建名字为子集的文件夹。