用python实现文件夹lab_6中存放着某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息,格式如下"实验报告_实验6 Python文件与数据格式化(2040706165_韦懿展).doc"。请用正则表达式获取学生姓名、学号存入CBC.csv中。 (提示: ① 共有35条记录,有一些文件命名未按规则; ② 以下代码可输出指定目录中的所有文件的名称
时间: 2024-02-03 07:15:19 浏览: 80
以下是实现代码,其中用到了re模块进行正则表达式匹配,os模块进行文件操作,csv模块进行csv文件的读写操作:
```python
import os
import re
import csv
# 获取指定目录中的所有文件的名称
dir_path = './lab_6/'
file_names = os.listdir(dir_path)
# 匹配学生姓名和学号的正则表达式
pattern = r'实验报告_实验6 Python文件与数据格式化\((\d{10})_(.*?)\)\.doc'
# 用于存储学生姓名和学号的列表
students = []
for file_name in file_names:
# 只处理doc文件
if not file_name.endswith('.doc'):
continue
# 匹配学生姓名和学号
match = re.match(pattern, file_name)
if match:
student_id = match.group(1)
student_name = match.group(2)
students.append((student_id, student_name))
# 将学生姓名和学号写入csv文件
with open('CBC.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['学号', '姓名'])
for student in students:
writer.writerow(student)
```
其中,读取指定目录中的所有文件的名称可以使用os.listdir()函数,该函数的返回值为一个列表,包含了指定目录中所有文件的名称;正则表达式的匹配可以使用re模块中的re.match()函数,该函数的返回值为一个Match对象,可以使用group()方法获取匹配的子串。最后,使用csv.writer()函数将学生姓名和学号写入csv文件。
阅读全文