文件夹lab_6中存放着¬某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息。请用正则表达式获取学生姓名、学号存入CBC.csv中。 (提示: ① 共有35条记录,有一些文件命名未按规则; ② 以下代码可输出指定目录中的所有文件的名称 import os for file in os.listdir(path): filename = str(file) )
时间: 2024-02-05 07:13:58 浏览: 27
可以使用正则表达式来匹配文件名中的学生姓名和学号,然后将其存入CSV文件中。以下是代码示例:
```python
import os
import re
import csv
# 定义正则表达式
name_pattern = r'([\u4e00-\u9fa5]+)' # 匹配中文姓名
id_pattern = r'(\d{10})' # 匹配10位数字学号
# 打开CSV文件
with open('CBC.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# 写入表头
writer.writerow(['Name', 'ID'])
# 遍历文件夹中的所有文件
for file in os.listdir('lab_6'):
if not os.path.isfile(os.path.join('lab_6', file)):
continue # 跳过子文件夹
# 匹配文件名中的学生姓名和学号
match = re.search(name_pattern, file)
if match:
name = match.group()
else:
continue # 如果没有匹配到姓名,则跳过该文件
match = re.search(id_pattern, file)
if match:
id = match.group()
else:
continue # 如果没有匹配到学号,则跳过该文件
# 将学生姓名和学号写入CSV文件
writer.writerow([name, id])
```
上述代码中,首先定义了正则表达式,用于匹配文件名中的学生姓名和学号。然后打开CSV文件,写入表头。接着遍历文件夹中的所有文件,对于每个文件,使用正则表达式匹配学生姓名和学号,如果匹配成功,则将其写入CSV文件。最后关闭CSV文件。