1.怎么在re模块中使用search给要输出的内容进行命名:(?p<name>正则表达式)
import re ret=re.search(‘\d(?P<name>\w+)‘,‘1jdkfjjdfkjjfdj‘) print(ret.group(‘name‘)) 结果为 jdkfjjdfkjjfdj
2.可以利用分组中的的形式给分组进行起名字:(?P<name>)
import re ret=re.search(‘<(?P<tag_name>\w+)>\w+</(?P=tag_name)>‘,‘<h1>hello</h11>‘) print(ret.group(‘tag_name‘))#如果前后的tag_name不一致则会报错 print(ret.group()) 结果为 File "D:/python练习程序/第十七天/第十九天.py", line 10, in <module> print(ret.group(‘tag_name‘)) AttributeError: ‘NoneType‘ object has no attribute ‘group‘ import re ret=re.search(‘<(?P<tag_name>\w+)>\w+</(?P=tag_name)>‘,‘<h1>hello</h1>‘) print(ret.group(‘tag_name‘))#如果前后的tag_name不一致则会报错 print(ret.group()) 结果为 h1 <h1>hello</h1>
3.如果不给分组中起名字也可以通过序号来找到对应的组:
import re ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>") print(ret.group(1)) print(ret.group()) 结果为 h1 <h1>hello</h1>
4.寻找计算字符串中的整数:
import re ret=re.findall(r‘\d+\.\d+|(\d+)‘,‘1-2*(60+(-40.35/5)-(-4*3))‘) print(ret) ret.remove(‘‘) print(ret) 结果为 [‘1‘, ‘2‘, ‘60‘, ‘‘, ‘5‘, ‘4‘, ‘3‘] [‘1‘, ‘2‘, ‘60‘, ‘5‘, ‘4‘, ‘3‘]
5.如果要把数字里的符号带着:
import re ret=re.findall(r‘-?\d+\.\d+|(-?\d+)‘,‘1-2*(60+(-40.35/5)-(-4*3))‘) print(ret) ret.remove(‘‘) print(ret) 结果为 [‘1‘, ‘-2‘, ‘60‘, ‘‘, ‘5‘, ‘-4‘, ‘3‘] [‘1‘, ‘-2‘, ‘60‘, ‘5‘, ‘-4‘, ‘3‘]
6.flag的许多用法:
7.匹配一段文本中的每行的邮箱:
import re ret=re.findall(r‘(?P<email>\w+://\w+.\w+.\w*?/)‘,‘http://blog.csdn.net/make164444332/artciel/5444‘) print(ret) 结果为 [‘http://blog.csdn.net/‘]
8.正则表达式的一些题目
9.模块的讲解:collections 、random、序列化、os、时间模块、
10.1collectios模块:python中的扩展数据类型:
10.1namedtuple :生成的名字可以访问元素的tuple
from collections import namedtuple Point=namedtuple(‘point‘,[‘x‘,‘y‘,‘z‘]) p1=Point(1,3,5) p2=Point(2,3,6) print(p1) print(p1.x) print(p2.z) 结果为 point(x=1, y=3, z=5) 1 6
10.2deque:双端队列,可以快速的从另外一端追加和推出对象:使用列表进行数据存储时如果按照索引进行元素访问时,就会很快,但是插入和删除元素就会很慢,因为list时线
性存储而队列是链性存储
10.21队列:满足先进先出的原则:FIFO
import queue q=queue.Queue() q.put([1,3,5]) q.put(3) q.put((1,4)) print(q.get()) print(q.get()) print(q.get()) print(q.get())#当值取完之后在操作不会报错会进行堵塞不会进行接下来的操作 q.put(3) print(q.get()) 结果为 [1, 3, 5] 3 (1, 4)
10.22双端队列指的是数据既可以从前面、后面或者插入的方式进行数据的放入和读取:
from collections import deque dq=deque([1,3]) dq.append(‘a‘)#在队列的最后添加元素 dq.appendleft(‘b‘)#在队列的最前面添加元素 dq.insert(3,4)#在队列的最4个位置添加元素 print(dq) print(dq.pop())#取出最后一个元素 print(dq.popleft())#取出第一个元素 结果为 deque([‘b‘, 1, 3, 4, ‘a‘]) a b
10.3有序字典:就是按照key的顺序进行输出:常用于购物车或者一些有序的场景下,但是有序字典比无序字典占的内存大:
from collections import OrderedDict od=OrderedDict([(‘a‘,1),(‘b‘,4),(‘c‘,5)]) for i in od: print(i) 结果为 a b c
10.4带默认值的字典:
from collections import defaultdict d=defaultdict(lambda:5)#必须是一个callable类型 print(d[‘k‘]) 结果为 5
from collections import defaultdict values=[11,33,55,66,77,99,134,43] my_dict=defaultdict(list) for value in values: if value>66: my_dict[‘k1‘].append(value) else: my_dict[‘k2‘].append(value) print(my_dict) 结果为 defaultdict(<class ‘list‘>, {‘k2‘: [11, 33, 55, 66, 43], ‘k1‘: [77, 99, 134]})
11.time模块:
在python中又三种方式来表示时间分别是时间戳、元组(strct_time)、格式化字符串
11.1时间戳(struct_stamp):通常来说,时间戳就是从1970年1月1号开始·计算时间的偏移量,类型是浮点型(float)
import time ret=time.time() print(ret) 结果为 1582203205.305226
11.2格式化的·时间字符串:formatstirng
import time print(time.strftime(‘%Y-%m-%d %H:%M:%S‘))#year month day hour minute second 结果为 2020-02-20 20:56:56
11.3元组(struct_time)里面共有9个元素(年月日时分秒一年中第几周,一年中第几天)
import time struct_time=time.localtime() print(struct_time) print(struct_time.tm_yday) 结果为 time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=21, tm_min=4, tm_sec=1, tm_wday=3, tm_yday=51, tm_isdst=0) 51
11.4 3种格式的转换:
11.31时间戳和结构化时间的转换:
import time t=time.time() print(t) print(time.localtime(t)) 结果为 1582204284.5429978 time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=21, tm_min=11, tm_sec=24, tm_wday=3, tm_yday=51, tm_isdst=0)
import time t=time.localtime() print(t) print(time.mktime(t)) 结果为 time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=21, tm_min=13, tm_sec=24, tm_wday=3, tm_yday=51, tm_isdst=0) 1582204404.0
11.34时间格式化和时间结构化之间的转换:
import time ret=time.strftime(‘%Y-%m-%d %H:%M:%S‘) print(time.strptime(ret,‘%Y-%m-%d %H:%M:%S‘)) 结果为 time.struct_time(tm_year=2020, tm_mon=2, tm_mday=20, tm_hour=21, tm_min=24, tm_sec=14, tm_wday=3, tm_yday=51, tm_isdst=-1)
print(time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime())) 结果为 2020-02-20 21:25:41
原文地址:https://www.cnblogs.com/ab461087603/p/12337560.html