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中的一些高级编程技巧
Apr 02 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python作用域用法实例详解
Mar 15 Python
Python设计模式之外观模式实例详解
Jan 17 Python
Python中format()格式输出全解
Apr 12 Python
linux下python中文乱码解决方案详解
Aug 28 Python
Django 框架模型操作入门教程
Nov 05 Python
python 有效的括号的实现代码示例
Nov 11 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
python 制作简单的音乐播放器
Nov 25 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php 静态化实现代码
2009/03/20 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
用Juery网页选项卡实现代码
2011/06/13 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Python线程同步的实现代码
2018/10/03 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
python安装scipy的步骤解析
2019/09/28 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
建筑经济管理专业求职信分享
2014/01/06 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python