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 相关文章推荐
python通过索引遍历列表的方法
May 04 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
Python中的asyncio代码详解
Jun 10 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
python 制作python包,封装成可用模块教程
Jul 13 Python
python和go语言的区别是什么
Jul 20 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 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
一些星际专用术语解释
2020/03/04 星际争霸
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
微信跳一跳python代码实现
2018/01/05 Python
python 不以科学计数法输出的方法
2018/07/16 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
python+opencv实现阈值分割
2018/12/26 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
职业生涯规划书基本格式
2014/01/06 职场文书
领导干部考核评语
2015/01/04 职场文书
行政撤诉申请书
2015/05/18 职场文书
行政上诉状范文
2015/05/23 职场文书