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升级提示Tkinter模块找不到的解决方法
Aug 22 Python
最基础的Python的socket编程入门教程
Apr 23 Python
Python字符串匹配算法KMP实例
Jul 18 Python
Python返回数组/List长度的实例
Jun 23 Python
详解windows python3.7安装numpy问题的解决方法
Aug 13 Python
Python列表切片操作实例总结
Feb 19 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
python 解决微分方程的操作(数值解法)
May 26 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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
晶体管来复再生式二管收音机
2021/03/02 无线电
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
关于vue组件事件属性穿透详解
2019/10/28 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
python基础教程之Hello World!
2014/08/29 Python
python多进程操作实例
2014/11/21 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
Python中的TCP socket写法示例
2018/05/11 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
增员口号大全
2014/06/18 职场文书
党员查摆剖析材料
2014/10/10 职场文书
2014年城管工作总结
2014/11/20 职场文书