(基础题)文件夹lab_6中存放着某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息。请用正则表达式获取学生姓名、学号存入CBC.csv中。 (提示: ①共有35条记录,有一些文件命名未按规则; ②以下代码可输出指定目录中的所有文件的名称 import os for file in os.listdir(path): filename = str(file) ) 程序代码
时间: 2024-01-21 17:19:29 浏览: 157
可以使用Python的re模块来实现正则表达式的匹配和提取。下面是一个可能的实现方式:
```python
import os
import re
# 定义正则表达式
name_pattern = r'([\u4e00-\u9fa5]{2,5})' # 匹配中文姓名,长度为2-5个字符
id_pattern = r'(\d{10})' # 匹配10位数字学号
# 遍历目录中的所有文件
path = 'lab_6'
for file in os.listdir(path):
filename = str(file)
# 判断文件名是否符合规则
if not re.match(r'^%s_%s\.docx$' % (name_pattern, id_pattern), filename):
continue
# 提取姓名和学号
name, id = re.findall(r'^%s_%s\.docx$' % (name_pattern, id_pattern), filename)[0]
# 将姓名和学号写入CSV文件
with open('CBC.csv', 'a', encoding='utf-8') as f:
f.write('%s,%s\n' % (name, id))
```
其中,`name_pattern`和`id_pattern`分别是匹配中文姓名和10位数字学号的正则表达式。在遍历目录中的所有文件时,使用`re.match()`函数判断文件名是否符合规则,如果不符合则跳过当前文件。如果符合规则,则使用`re.findall()`函数提取姓名和学号,并将其写入CSV文件中。注意要使用`'a'`模式打开文件,以便在文件末尾继续写入数据。
阅读全文