#字符串格式的时间 转换为datetime格式时间 text = "2021-11-11" v1 = datetime.strptime(text,"%Y-%m-%d") print(v1)#2021-11-11 00:00:00
1 2 3 4
#datetime格式 转换为字符串 v1 = datetime.now val = v1.strftime("%Y-%m-%d %H:%M:%S") print(val)
4.正则表达式相关
当给你一大堆文本信息,让你提取其中的指定数据时,可以使用正则来实现。例如:提取文本中的邮箱和手机号
1 2 3 4
import re text = "太厉害了,给我一份资源吧!我的邮箱号是123456789@qq.com和dhk@live.com,这是我的手机号12312312315!" phone_list = re.findall("1[2|3|5]\d{9}",text) print(phone_list)#['12312312315']
正则表达式并不是只属于python,在其他语言中同样存在。
4.1正则表达式
4.1.1字符相关
1.dhk 匹配文本中的dhk
1 2 3 4
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("dhk",text) print(data_list)#['dhk', 'dhk', 'dhk']
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("d[hk]",text)#q开头的字符串,后面的内容只能是h或者是k print(data_list)#['dh', 'dh', 'dh']
3.匹配除了abc以外的字符串
1 2 3 4
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("[^dhkj]",text) print(data_list)
4.[a-z]匹配a~z的任意字符,([0-9]也可以)
1 2 3 4
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("[d-e]",text) print(data_list)#['d', 'd', 'e', 'e', 'd']
5.”.”代指出换行符以外的任意字符
1 2 3 4
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("d.k",text) print(data_list)#['dhk', 'dhk', 'dhk']
1 2 3 4
import re text = "你好啊dhkk,我知道其实你dhkk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("d.+k",text)#贪婪匹配是能匹配长的就匹配长的,可以是任意字符,任意数量。 print(data_list)#['dhkk,我知道其实你dhkk是一个joker,但是身为joker的dhk']
1 2 3 4
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为joker的dhk是不能暴露身份的," data_list = re.findall("d.+?k",text)#非贪婪匹配,能匹配短的就匹配短的。 print(data_list)#['dhk', 'dhk', 'dhk']
6.\w指代字母或数字或下划线(汉字)。
1 2 3 4
import re text = "你好啊dhk,我知道其实你dhk是一个joker,但是身为 joker的dhk是不能暴露身份的," data_list = re.findall("jo\w+k",text)#不加问号就是贪婪匹配 print(data_list)
7.\d代指所有的数字
1 2 3 4
import re text = "123asd123sad2_123minadasd" data_list = re.findall("d\d",text) print(data_list)#['d1', 'd2']
8.\s代指一的空白符,包括空格,制表符等。
1 2 3 4
import re text = "root admin add admin" data_list = re.findall("a\w+\s\w+",text) print(data_list)#['admin add']
4.1.2数量相关
1.*重复0次或更多次
1 2 3 4
import re text = "dhk is a joke,definitely a joker" data_list = re.findall("ker*",text) print(data_list)#['ke', 'ker']
2.+重复1次或更多次
1 2 3 4
import re text = "dhk is a joke,definitely a joker" data_list = re.findall("j\w+k",text) print(data_list)#['jok', 'jok']
3.?重复0次或1次
1 2 3 4
import re text = "dhk is a joke,definitely a joasdasdasdker" data_list = re.findall("j\w?k",text) print(data_list)#['jok']
4.{n}重复n次
5.{n,}重复n次或多次
6.{n,m}重复n次到m次
4.1.3括号(分组)
1.提取数据区域
1 2 3 4
import re text = "楼主你这资源好啊,我有个朋友想要。1231231231" data_list = re.findall("1231(2\d{5})",text)#意味着匹配还是按照没有括号的时候匹配,但是返回的值是括号里面的。 print(data_list)#['231231']
1 2 3 4
import re text = "楼主你这资源好啊,我有个朋友想要。1231231231" data_list = re.findall("(1231(2\d{5}))",text)#由于这里有两层括号,所以会先返回小括号的内容,然后返回大括号的内容。 print(data_list)#[('1231231231', '231231')]
2.获取指定区域+或条件
1 2 3 4
import re text = "哇你这dhk真1231admin23123的是一个小丑啊!天ro123123123ot哪!joker,来点资源123123clown123" data_list = re.findall("1231(\d{4}|\w{5}\d+)3",text)#这里面的管道符|就是或条件 print(data_list)#['admin2312', '2312']
4.1.4 ^起始$结束
4.1.5特殊字符
由于正则表达式中各种特殊符号都有特殊的含义,所以如果想要在正则中匹配这种指定的字符,需要转移
1 2 3 4
import re text = "dhk is a{9}clown!" data = re.findall("a\{9\}clown!",text) print(data)#['a{9}clown!']