需求:
查找当前文件夹下所有的.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)