python 正则化,遍历文件夹下的所有目录和文件名

 

目录

 

findall:在中文中找出英文单词 正则表达式实例

sub:替换表达式中的指定字符串

便利目录下的所有:文件名和目录

方法1:

方法2:


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))

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值