https://www.cnblogs.com/Eva-J/p/7228075.html#_label10

findall


search

match方法  和 search相比 match自带 ^

search match findall区别 :
findall 返回所有匹配项 ,放在列表中
search 需要通过group方法返回满足条件值 。 group分组
search方法 是自带“^” 分组问题



split方法


替换方法 sub



Compile



分组命名



模块名. 方法名()
# re 模块的findall 方法
import re
ret =re.findall('\d','eva1 egon2 yuan3 dadf')
print(ret)
# 结果:['1', '2', '3'] 返回所有满足匹配条件的结果,放在列表中
import  re
ret = re.findall('[a-z]\d','abd2dfasdfadfadl')
print(ret)
#输出结果为:['d2']
# research
import re
ret = re.search('a','ad ad3oookew a rew')
print(ret)
res =ret.group()
print(res)
# 结果 为a ,返回的事第一个满足条件的项。
# 使用group方法就可以获得到具体的值 #match
ret =re.match('ab','abcd')
print(ret) # 没找到则返回None
# 返回结果 :<_sre.SRE_Match object; span=(0, 2), match='ab'>
res =ret.group()
print(res)
# 返回结果 ab
# match和search是基本相同的,不同的是match方法的正则自带^效果
ret =re.search('^ab','abcd')
res=ret.group()
print(res)
# 输出结果为ab findall方法
ret= re.findall('[a-z]\d','ab32300sfasd2dfladsf;')
print(ret)
输出结果 :['b3', 'd2']
分组()
ret= re.findall('[a-z](\d)','ab32300sfasd2dfladsf;')
print(ret)
输出结果:['3', '2']

# 在findall的正则规则中有分组 仍然按照正则规则去匹配,只不过在显示的时候,只显示分组中的内容

ret = re.findall('www\.(?:baidu|oldboy)\.com', 'www.oldboy.com')
print(ret)
输出结果
['www.oldboy.com']
# ret = re.search('([a-z])(\d)','ab2748cdef14g239')
# print(ret.group()) # 直接获取正则规则匹配到的项
# print(ret.group(2)) # 如果给group传递参数,那么传递的参数能够代表在正则表达式中组的次序
# print(ret.group(1)) # 从而获取到对应次序上的值
 
ret =re.split('\d','a1b2c3d4sdf434')
print(ret)
结果 :['a', 'b', 'c', 'd', 'sdf', '', '', '']
# 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
 
split()
ret = re.split('[ab]','a*           bcd')
print(ret) # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
# ['', '*           ', 'cd'] Sub()
ret =re.sub('\d','H','eva3eon4yuan4',1)#将数字替换成'H',参数1表示只替换1个
print(ret)
输出结果为:evaHeon4yuan4

subn()
ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)

输出结果:('evaHegonHyuanH', 3)


obj =re.compile('\d{3}')#将正则表达式编译一下得到一个结果,规则要匹配的是3个数字
ret=obj.search('abc123eee') #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())
ret =obj.search("asdfasdfapwe34243243")
print(ret.group()) 输出结果 为 :

finderiter .

ret =re.finditer('\d','alfas33dofo2324')  #finditer返回一个存放匹配结果的迭代器
print(ret)
# 返回结果<callable_iterator object at 0x01CFC4B0>
for i in ret:
print(i.group())
# 结果2
# 3
# 2
# 4
import re
ret = re.search('<(?P<tag>\w+)>(\w+)</(?P=tag)>',"<h1>hello</h1>")
print(ret.group())
print(ret.group('tag'))

结果:

<h1>hello</h1>
h1

ret=re.findall("\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret)
输出结果 ['1', '2', '60', '40', '35', '5', '4', '3'] 查询所有的数字 带小数点的有误.

# \d+\.\d+ | \d+ 小数的表示方法.

# ret=re.findall("\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
# ret.remove('')
# print(ret)
# print(r'\\n')
# print(r'\n')
# r 取消这个字符串中的转译作用
# 凡是出现\且没有特殊意义的时候都可以在字符串的前面加上r符号
# r'\\n' r'\n'
# r'\app\ntp'

输出结果:

['1', '2', '60', '5', '4', '3']
\\n
\n

import re
import json
from urllib.request import urlopen def getPage(url):
'''使用url访问对应的网页,将网页的源码返回'''
response = urlopen(url)
return response.read().decode('utf-8') def parsePage(s):
com = re.compile(
'<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
'.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>', re.S) ret = com.finditer(s)
for i in ret:
yield {
"id": i.group("id"),
"title": i.group("title"),
"rating_num": i.group("rating_num"),
"comment_num": i.group("comment_num"),
} def main(num):
url = 'https://movie.douban.com/top250?start=%s&filter=' % num
response_html = getPage(url)
ret = parsePage(response_html)
print(ret)
f = open("move_info7", "a", encoding="utf8")
for obj in ret:
print(obj)
data = str(obj)
f.write(data + "\n") count = 0
for i in range(10):
main(count) #
count += 25

import random

print (random.random()) #返回大于0 小于1 的随机小数

print(random.uniform(2,3)) #返回大于2,小于3的小数.

print(random.randint(10,20))# 返回大于10 小于20的随机整数 .

random.choice  后面加一个(列表等可迭代对象) ,然后取随机一个数或者字符串 ,列表等等.

# print(random.choice([1,'23',[4,5]]))

random.sample 后面加一个(列表等可迭代对象) 和然后n数字, 随机抽取n个字符做随机循环.

# print(random.sample([1,'23',[4,5]],))

 random.shuffle   洗牌会用到.  random.shuffle(item), item 为一个列表

print (random.shuffle([1,2,2,3,4,6,6,7,8])) #无返回值

# 随机
# 验证码
# 抽奖
import random
# print(random.choice([,'',[,]]))
# print(random.sample([,'',[,]],))# 内容为可迭代对象.

rand
# 排序
# item = [,,,,]
# random.shuffle(item)
# print(item) # 作业 :
# 用namedtuple描述扑克牌
# 用random模块完成生成随机验证码
# 4位随机数字 可以重复
# 6位验证码随机数字和字母 可以重复
# 计算器
# 正则表达式 从大算式中找到一个不再含有小括号的最小算式
# ret -/ -*/ + /*/* + * / -* -*
# 从没有括号的算式中找到乘除法 -/ -*/ + /*/* + * /
# 计算'2*5'的结果

 Random

import random
print(random.choice([1,'23',[4,5]]))
print(random.sample([1,'23',[4,5]],2)) # 排序 10000
item = [1,3,5,7,9]
random.shuffle(item)
print(item) 输出结果 :

23
[[4, 5], 1]
[3, 7, 1, 9, 5]

1
[[4, 5], '23']
[5, 7, 3, 9, 1]

												

Day 19 re 模块 random模块,正则表达式的更多相关文章

  1. python常用模块——random模块

    参考博客:http://www.360doc.com/content/14/0430/11/16044571_373443266.shtml 今天突然想起python该怎么生成随机数?查了一下,贴出实 ...

  2. Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)

    Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...

  3. Python模块01/自定义模块/time模块/datetime模块/random模块

    Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...

  4. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

  5. re模块 ,random模块

    # 在python中使用正则表达式 # 转义符 : 在正则中的转义符 \ 在python中的转义符# 正则表达式中的转义 :# '\(' 表示匹配小括号# [()+*?/$.] 在字符组中一些特殊的字 ...

  6. 转译符,re模块,random模块

    一, 转译符 1.python 中的转译符 正则表达式中的内容在Python中就是字符串 ' \n ' : \ 转移符赋予了这个n一个特殊意义,表示一个换行符 ' \ \ n' :  \ \  表示取 ...

  7. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  8. 4-24日 collections模块 random模块 time模块 sys模块 os模块

    1, collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdi ...

  9. Python全栈之路----常用模块----random模块

    程序中有很多地方需要用到随机字符,比如登陆网站的随机验证码,通过random模块可以很容易生成随机字符串. >>> import random >>> random ...

随机推荐

  1. 9-最短路径(dijkstra)

    参考博客:http://www.wutianqi.com/?p=1890 #include <iostream>using namespace std;#define  max 1< ...

  2. vi编辑时出现E325:ATTENTION

    我们用vi编辑文件时,系统会提示E325:ATTENTION. 这是由于在编辑该文件的时候异常退出了,因为vi在编辑文件时会创建一个交换文件swap file以保证文件的安全性. 但是每次打开文件时都 ...

  3. 【转】从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    原文:http://www.cnblogs.com/jeffwongishandsome/archive/2012/01/08/2316521.html 熟悉WebForm开发的朋友一定都知道,Pag ...

  4. Scrum 项目3.0--软件工程

    1. 确保product backlog井然有序.(参考示例图1) (例图1) 2.把故事进一步拆分成任务.(参考示例图2) (例图2) 3. 形成Sprint backlog. Scrum mast ...

  5. 讲真的,千万别得罪会PS的人

    传说中有一种软件炒鸡可怕 那就是PS,专业术语是photoshop! 它能让你貌美如花 也能让你瞬间丑得掉渣 更可怕的是网络上大神的出现 简直让我们难以想象的厉害! 下面大家一起来欣赏一下 那些大神帮 ...

  6. CString 作为参数执行都不执行

    static int LoadUsbSDK(CString curpath ) win10系统下 CString 函数加载dll直接跳过 加载dll最好不要带参数

  7. OSGi 系列(十六)之 JDBC Service

    OSGi 系列(十六)之 JDBC Service compendium 规范提供了 org.osgi.service.jdbc.DataSourceFactory 服务 1. 快速入门 1.1 环境 ...

  8. windows10 装linux子系统

    http://blog.csdn.net/Yuxin_Liu/article/details/52347898 试了一下,下载太慢,就没继续用,可以用实验楼这个网来玩玩linux

  9. 20155328 2016-2017-2 《Java程序设计》第7周学习总结

    20155328 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 时区 Date与DateFormat Date只用来获取epoch毫秒数 DateForma ...

  10. Django入门与实践-第14章:用户注册(完结)

    http://127.0.0.1:8000/signup/ django-admin startapp accounts INSTALLED_APPS = [ 'accounts', ] # mypr ...