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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
python文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
python 实时遍历日志文件
Apr 12 Python
python查看列的唯一值方法
Jul 17 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
Python字符串对象实现原理详解
Jul 01 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
Python 中@property的用法详解
Jan 15 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php self,$this,const,static,->的使用
2009/10/22 PHP
第五章 php数组操作
2011/12/30 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
用JavaScript显示随机图像或引用
2009/04/21 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
node.js中的console用法总结
2014/12/15 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python正则表达式知识汇总
2017/09/22 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
python爬虫可以爬什么
2020/06/16 Python
Python使用Pygame绘制时钟
2020/11/29 Python
美术师范毕业生自荐信
2013/11/16 职场文书
硕士研究生个人求职信
2013/12/04 职场文书
接受捐赠答谢词
2014/01/27 职场文书
《学会待客》教学反思
2014/02/22 职场文书
期末学生评语大全
2014/04/24 职场文书
社会心理学学习心得体会
2016/01/22 职场文书