第十九天模块调用的讲解:

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

时间: 2024-10-08 08:16:01

第十九天模块调用的讲解:的相关文章

javaSE第十九天

第十九天????227 1:异常(理解)????227 (1) 定义????227 a)异常的引入????227 (2)异常的体系????228 (3)异常的处理:????229 A:JVM的默认处理????229 B:自己处理????229 (4)异常知识点代码详解????229 a) 异常处理的方式????229 b) 多个异常的处理????230 c) JDK7异常处理的新方式????233 d) 编译时期异常和运行时期异常的区别????234 e) 异常中的方法详解????235 f)

第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号

第三百三十节,web爬虫讲解2-urllib库爬虫-实战爬取搜狗微信公众号 封装模块 #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib from urllib import request import json import random import re import urllib.error def hq_html(hq_url): """ hq_html()封装的爬虫函数,自动启用了用户代理和ip

第二十九天 月出惊山鸟 —Spring的AOP_AspectJ @annotation

6月14日,阴转雨."四面垂杨十里荷,向云何处最花多, 画楼南畔夕阳和.天气乍凉人寂寞, 光阴须得酒消磨,且来花里听笙歌." 面向切面的框架AspectJ邂逅Spring,不仅造就一种简洁,更带来更多的选择空间. 上篇的切面与代理配置方式,麻烦且繁琐.好在Spring 与 AspectJ 进行了集成,从接口和配置的泥潭爬出,善莫大焉. 下面把上一篇Spring的AOP 的例子改写一下,达到同样的效果. 1-3步骤不变. 4.定义一个 Aspect 切面类BallHandler.java

第三十九天 一乐在其中—Android的小游戏打飞机(三)飞机打子弹

8月7日,小雨."乳鸦啼散玉屏空,一枕新凉一扇风.睡起秋色无觅处,满阶梧桐月明中." 上篇已经让飞机随手指自由移动,本篇加载子弹和音效及背景音乐. 本篇要用到的几个函数讲解: 一.cocos2d的音效.背景音乐函数如下: 1.SoundEngine.sharedEngine().playSound(Context ctxt, int resId, boolean loop) 用于播放背景音乐. 2.SoundEngine.sharedEngine().playEffect(Contex

[转]python3 跨目录模块调用,你真的懂了吗?

小伙伴们,你们有遇到过调用自己写的模块(跨目录模块调用),提示你ImportError:No module named ...的情况,如果有,而且到现在还没有搞明白的,我想说,你今天看对文章了. 这篇文章主要是讲解怎么还原一个出错的场景,然后分析出错原因,一步一步的解决这个问题的思路. 项目结构 代码内容 # model1/student.py def get_name(): return "hting" # model1/new_student.py from student imp

【玩转微信公众平台之十】 图文消息回复讲解

讲解目录 <保卫战:异形入侵>游戏开发    1 第一讲   游戏演示和资源的介绍    1 第二讲  "异形"怪物的实现    1 第三讲  "异形"怪物生命值的体现    9 第四讲  "异形"怪物死后处理    12 第五讲  玩家的制作    15 第六讲  玩家的行走控制(键盘)    16 第七讲  武器的切换(鼠标)     16 第八讲  摄像头的变化(鼠标)    19 第九讲  子弹预制体和特效的制作    20

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()” 用户访问一个不存在的操作—>解决:给每个控制器都定义个_empty()方法来处理 第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处理__autoloa

ThinkPHP实现跨模块调用操作方法概述

ThinkPHP实现跨模块调用操作方法概述 投稿:shichen2014 字体:[增加 减小] 类型:转载 使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块的方法.这篇文章主要介绍了ThinkPHP跨模块调用操作,需要的朋友可以参考下 使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块的方法.ThinkPHP内置了A方法与R方法这两个特殊的大写字母方法来处理跨模块调用的问题. 目前Index模块内有index操作Use

AngularJS进阶(四十)创建模块、服务

AngularJS进阶(四十)创建模块.服务 学习要点 使用模块构架应用 创建和使用服务 为什么要使用和创建服务与模块? 服务允许你打包可重用的功能,使之能在此应用中使用. 模块允许你打包可重用的功能,使之能跨应用使用. 一.应用程序模块化 先看看一个没有模块化的程序 <!DOCTYPE> <!-- use module --> <html ng-app="exampleApp"> <head> <title>Angluar