例子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)

猜你喜欢

转载自blog.csdn.net/weixin_40859481/article/details/82664220