例子3:正则表达式查找

需求:

查找当前文件夹下所有的.txt文件,查找匹配用户提供的正则表达式的所有行,打印到屏幕上。

分析:

1. 获取当前目录并list出当前目录所包含的元素 -》os.listdir()

2. 循环出当前目录下所有的txt文件,追加到列表中 -》os.path.join()和os.path.splitext() # 分离文件名和扩展名

3. 获取用户输入 -》re.compile(input("请输入您要匹配的正则表达式:"))

4. 读取所有txt文件,并读取每一行text -》readlines()

5. 判断与用户输入的正则表达式是否匹配 -》re.search() #匹配包含

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 正则匹配中文,固定形式:\u4E00-\u9FA5

import re
import os

# 获取文件的路径
filePath = os.path.abspath("..") + "/file/"
# print(filePath)

fileList = os.listdir(filePath)
# print(fileList)

txtDirList = []

for each in fileList:
    newDir = os.path.join(filePath, each)
    # print(newDir)
    if os.path.isfile(newDir):
        if os.path.splitext(newDir)[1] == ".txt":
            txtDirList.append(newDir)
        # print("correct")
    else:
        print("该文件不存在!")

# print(txtDirList)

regex = re.compile(input("请输入您要匹配的正则表达式:"))
#  测试数据:".*?([\u4E00-\u9FA5]+京)"

for x in txtDirList:
    with open(x, mode="r", encoding="utf-8") as txtFile:
        txtFileContent = txtFile.readlines()
        for y in txtFileContent:
            if regex.search(y):
                print(y)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值