Python编程快速上手——正则表达式查找功能案例分析


Posted in Python onFebruary 28, 2020

本文实例讲述了Python正则表达式查找功能。分享给大家供大家参考,具体如下:

题目如下:

  • 编写一个程序,打开文件夹中所有的.txt文件,查找匹配用户提供的正则表达式的所有行。结果应该打印到屏幕上。

思路如下:

  • 程序需要做的事情如下:
    遍历文件夹得到所有.txt文件名
    打开所有.txt文件,正则表达式进行模式匹配
    查找结果显示到屏幕
  • 代码需要做的事情如下:
    导入re,os模块
    定义正则表达式函数
    函数内进行正则表达式匹配,并返回匹配所在行列表
    for调用os.listdir(path),生成.txt文件名列表
    for循环打开所有.txt文件
    用户输入需要查找的字符串
    for循环遍历函数返回结果
    输出结果到屏幕

代码如下:

import os, re

def fileRex(inputStr,txtLines):
  txtRex = re.compile(r'{0}'.format(inputStr)) #正则表达式对象
  blockList = []
  i = 0
  for t in txtLines:
    try:
      mo1 = txtRex.search(t)
      mo1.group()
      #search()方法匹配成功生成match对象,group()返回匹配到的对象,匹配成功即表示这一行为需要查找结果,添加到列表
      i += 1 #计数
      blockList.append(t)
    except:
      continue
      #search()方法未匹配成功会报错,程序崩溃,因此需要except加上continue,进入下一次循环
  print("匹配到的模式个数:",i)
  return blockList


nameList = [] #创建文件名列表

file = input("请输入文件夹绝对路径(如:C:\\Users\\Administrator\\Desktop\\exam):") #\\转义字符相当于 \
for fileName in os.listdir(file): #os.listdir()方法遍历文件夹
  p = 0
  if fileName.endswith('.txt'): #enswith方法,判断字符串结尾,检查文件名后缀是不是.txt文本文件
    nameList.append(fileName) #添加到文件名列表
    p += 1
  else:
    continue
print("找到的文本文件个数: {0} !文件有:{1}".format(p,nameList))
txtLines = [] #创建存放文本行的列表
for i in nameList:
  txtFile = open('{0}\\{1}'.format(file,i)) #open函数创建file对象
  txtLines += txtFile.readlines() #readlines返回列表,+ 号连接返回的列表
print("文本文件行列表:\n",txtLines) #输出文本行列表

inputStr = input("请输入要查找的字符串:")

for k in fileRex(inputStr,txtLines): #调用函数,循环遍历返回的列表
  k = k.strip('\n') #去掉列表字符串中的空格
  print("含有字符 “{0}” 的文本行有:{1}".format(inputStr,k)) #输出查找结果

输出结果如下:

Python编程快速上手——正则表达式查找功能案例分析

Python 相关文章推荐
详解Django缓存处理中Vary头部的使用
Jul 24 Python
python编程实现归并排序
Apr 14 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
Python实现 版本号对比功能的实例代码
Apr 18 Python
python顺序执行多个py文件的方法
Jun 29 Python
python实现从wind导入数据
Dec 03 Python
如何通过python实现人脸识别验证
Jan 17 Python
python3 实现口罩抽签的功能
Mar 11 Python
python boto和boto3操作bucket的示例
Oct 30 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
利用python画出AUC曲线的实例
Feb 28 #Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 #Python
AUC计算方法与Python实现代码
Feb 28 #Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 #Python
Python计算IV值的示例讲解
Feb 28 #Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 #Python
Python自动采集微信联系人的实现示例
Feb 28 #Python
You might like
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP类中Static方法效率测试代码
2010/10/17 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
web页面数据展示新想法(json)
2010/06/08 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
python学习之matplotlib绘制散点图实例
2017/12/09 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
浙大毕业生自荐信
2014/01/26 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS