python编程快速上手

第八章 正则表达式查找

编写一个程序,打开文件夹中所有的.txt文件,查找匹配用户提供的正则表达式的所有行。结果应该打印到屏幕上。

#导入模块os,re
import re,os
#建立正则表达式的规则,一个是匹配文件的,一个是匹配文档的
#创建函数,包含(地址、文件表达式、语句表达式)三个参数
def FindTxt(Addr,fileRe,sentRe):
    #创建文件、文档正则表达式
    fileRegex=re.compile(fileRe)
    sentenceRegex=re.compile(sentRe)
    #通过os模块查找指定路径中的文件名,返回一个列表
    fileLists=os.listdir(Addr)
    #创建一个字典,用于储存找到的文件路径及对应的语句
    printFiles={}
    #创建两个变量,用于储存找到的文件及对应语句数量
    fileNum=0
    sentNum=0
    #找到文件中所有的.txt文件,并逐一打开,并且要打印或者留存,这里可以增加一个计数功能,看有多少txt文件
    for fileList in fileLists:
        if fileRegex.search(fileList):
            fileNum+=1
            fileAddr=Addr+fileList
            fileobj=open(fileAddr)
            sentLists=fileobj.readlines()
            sentTemp = 0
            #创建一个临时变量sentTemp用于存储匹配到的句子数量,如果没有匹配到句子就以为文件中的文本不符合要求,这个文件应该不作为目标
            # 对文档内容各行进行匹配,匹配到的就需要打印出来或者留存,以备打印,可以增加计数功能,看有多少匹配的句子
            for sentList in sentLists:
                if sentenceRegex.search(sentList):
                    sentNum+=1
                    sentTemp+=1
                    # 将符合条件的文件路径及句子赋值到字典中去,记住要去除'\n',不然不好看
                    printFiles.setdefault(fileAddr,[]).append(sentList.strip('\n'))
            if sentTemp==0:
                fileNum-=1
    print('在路径为%s的文件夹内,找到了%s个符合要求的文件,总共有%s个符合的句子。\n对应关系如下:' % (Addr, fileNum,sentNum))
    #打印字典中的内容对应打印出来
    for printFile in printFiles:
        print(printFile+':')
        for printSen in printFiles[printFile]:
            print('\t\t\t\t%s'%printSen)
Address='E:\\pythonProject\\add\\'
fileRe='.txt'
sentRe='hello'
FindTxt(Address,fileRe,sentRe)


  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值