目录
findall:在中文中找出英文单词 正则表达式实例
import re
result_list = re.findall('[a-zA-Z0-9]+',input_line)
findall返回所有 成一个list ,加号代表匹配一个或多个
sub:替换表达式中的指定字符串
pattern为表示正则中的模式字符串,
repl为replacement,被替换的内容,repl可以是字符串,也可以是函数。
string为正则表达式匹配的内容。
count:由于正则表达式匹配到的结果是多个,使用count来限定替换的个数(顺序为从左向右),默认值为0,替换所有的匹配到的结果。
flags是匹配模式,可以使用按位或’|’表示同时生效,也可以在正则表达式字符串中指定。(详情见链接)
举例:
import re
re.sub(r'\w+','10',"ji 43 af,geq",2,flags=re.I)
'10 10 af,geq'
详解:首先导入re模块,使用re.sub函数,r’\w+’为正则表达式,匹配英文单词或数字,’10’为被替换的内容,”ji 43 af,geq”为re匹配的字符串内容,count为2 只替换前两个,flags=re.I 忽略大小写。
便利目录下的所有:文件名和目录
方法1:
遍历目录,返回子目录下面的所有的符合条件的文件名。以列表形式
import glob
import glob
#folder是数据根目录,子目录的名字分别为:s1,s2,s3....s40
#folder为子目录的路径
for k in range(40):
folder2 = os.path.join(folder, 's%d' % (k+1))
data = [ cv2.imread(d,0) for d in glob.glob(os.path.join(folder2, '*.pgm'))]
#cv2.imread()第二个参数为0的时候读入为灰度图,即使原图是彩色图也会转成灰度图#glob.glob匹配所有的符合条件的文件,并将其以list的形式返回,flod
方法2:
def list_all_files(rootdir):
import os
_files = []
list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
for i in range(0,len(list)):
path = os.path.join(rootdir,list[i])
if os.path.isdir(path):
_files.extend(list_all_files(path))
if os.path.isfile(path):
_files.append(path)
return _files
_fs = list_all_files('./资料')
#将第一阶段的文件遍历出来
_k = filter(lambda x:re.compile(r'stage2.txt').search(x),_fs)
#-*- conding:utf-8 -*-
import re
#compile 创建一个正则模式
# pattern = re.compile('\w?')
#match 只匹配开头
# print(re.match('hello','hello world').group())
#search 只匹配一次
# pattern = re.compile('[abc]{1}')
# strs = '123a1b2c3'
# re.search(pattern,strs)
# print(pattern.search(strs).group()) #返回match对象
#findall
# pattern = re.compile('[abc]{1}')
# strs = '123a1b2c3'
# print(pattern.findall(strs))
# pattern = re.compile('(\d+) [a-z]+') #如果遇上分组只返回分组匹配结果
# strs = '123 abc,456 efg'
# print(pattern.findall(strs))
#finditer
# for i in pattern.finditer(strs):
# print(i.group()) #匹配完整的结果
# print(i.group(1)) #匹配第一个分组的结果
#split
# print(re.split('\d','a1b2c3d4e')) #返回列表4
#sub
# print(re.sub('\d','_','a1b2c3d4e'))
#引用分组
# pattern = re.compile('(\d+) ([a-z]+)')
# strs = '123 abc'
# print(pattern.findall(strs))
# for i in pattern.finditer(strs):
# print(i.group())
# print(i.group(1)) #第一组匹配结果
# print(i.group(2)) #第二组匹配结果
#
# # 1[3578]\d \d{4} \d{4}
# print(pattern.sub(r'\1****\2',strs))
#贪婪以及非贪婪
# strs = "fdsfds<a href='www.baidu.com'>dsfds</a>fdngodfnglk<a>sdf</a>"
# pattern = re.compile('<a.*</a>') #贪婪规则 在符合规则的前提下尽可能多的匹配
# print(pattern.findall(strs))
# ["<a href='www.baidu.com'>dsfds</a>fdngodfnglk<a>sdf</a>"]
# patterns = re.compile('<a.*?</a>') #非贪婪规则 在符合规则的前提下尽可能少的匹配
# print(patterns.findall(strs))
# ["<a href='www.baidu.com'>dsfds</a>", '<a>sdf</a>']
#匹配中文字符
# strs = '大家好我是刘德华'
# pattern = re.compile('\w+')
# pattern = re.compile('.+')
# pattern = re.compile('^[\u4e00-\u9fa5]+$') # 固定写法 匹配中文
# result = pattern.findall(strs)
# print(pattern.findall(strs))
#
# if result :
# print('全部是中文')
# else:
# print('不全是中文')
#将以下字符串中所有的url匹配出来
str = '''313156566@qq.com
hjasd23@163.com
http://www.ab123c.com.cn
https://www.sae.com
ftp://www.nnn.org
ftps://www.jksad.net'''
# pattern = re.compile('[a-z]+://www(\.[a-z0-9]+)(\.[a-z]+){1,2}')
# for i in pattern.finditer(str):
# print(i.group(0))
#判断以下字符是否全是中文(中文正则模式[\u4E00-\u9FA5])
# str='广东省广州市';
# pattern = re.compile('^[\u4e00-\u9fa5]+$') # 固定写法 匹配中文
# result = pattern.findall(str)
# print(pattern.findall(str))
#
# if result :
# print('全部是中文')
# else:
# print('不全是中文')
#写出一个正则表达式,过虑网页上的所有JS脚本(即把scrīpt标记及其内容都去掉)
# script="以下内容不显示:<script language='javascript'>alert('cc');" \
# "</script><p>fdgdfgdgsdg</p><script>alert('dd');</script>"
#
# pattern = re.compile('<script.*?</script>')
# print(pattern.findall(script))
# print(pattern.sub('',script))
#通过正则表达式把img标签中的src路径匹配出来
# str='''
# <img name="photo" src="../public/img/img1.png" />
# <img name='news' src='xxx.jpg' title='news' />
# '''
# pattern = re.compile('src=[\'\"](.*?)[\'\"]')
# print(pattern.findall(str))
#将电话号码13811119999变成138****9999
# phone = '13811119999'
# pattern = re.compile('^(1[356789]\d)\d{4}(\d{4})$')
# result = pattern.findall(phone)
# print(result)
#
# for i in pattern.finditer(phone):
# print(i.group(0))
# print(i.group(1))
# print(i.group(2))
#
#
# print(pattern.sub(r'\1****\2',phone))