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 20 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python实现的redis分布式锁功能示例
May 29 Python
Python实现快速计算词频功能示例
Jun 25 Python
Python3中bytes类型转换为str类型
Sep 27 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python 用户输入和while循环的操作
May 23 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 Python
python读取并查看npz/npy文件数据以及数据显示方法
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
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
我的javascript 函数链之演变
2011/04/07 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
python检测远程服务器tcp端口的方法
2015/03/14 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python中异常重试的解决方案详解
2017/05/05 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python 多维List创建的问题小结
2019/01/18 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
教师找工作推荐信
2013/11/23 职场文书
24岁生日感言
2014/01/13 职场文书
婚礼司仪主持词
2014/03/14 职场文书
学生会竞聘书范文
2014/03/31 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书