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使用urllib2模块获取gravatar头像实例
Dec 18 Python
python中threading超线程用法实例分析
May 16 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
python实现图书管理系统
Mar 12 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
python 获取图片分辨率的方法
Jan 08 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 Python
pytorch显存一直变大的解决方案
Apr 08 Python
PyTorch的Debug指南
May 07 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
一些php技巧与注意事项分析
2011/02/03 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
图解js图片轮播效果
2015/12/20 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
vue中$refs的用法及作用详解
2018/04/24 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
python字典的遍历3种方法详解
2019/08/10 Python
python简单实现9宫格图片实例
2020/09/03 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
西班牙手机之家:Phone House
2018/10/18 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
日语求职信范文
2013/12/17 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
搞笑婚前保证书
2015/02/28 职场文书
就业导师推荐信范文
2015/03/27 职场文书
第一节英语课开场白
2015/06/01 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电