用python实现文件夹lab_6中存放着某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息,格式如下"实验报告_实验6 Python文件与数据格式化(2040706165_韦懿展)(1).doc"。请用正则表达式获取学生姓名、学号存入CBC.csv中。 (提示: ① 共有35条记录,有一些文件命名未按规则; ② 以下代码可输出指定目录中的所有文件的名称
时间: 2024-02-03 19:15:42 浏览: 61
可以使用Python中的re模块进行正则表达式的匹配,实现如下:
```python
import os
import re
# 定义正则表达式
pattern = r'实验报告_实验6 Python文件与数据格式化\((\d+)_(.+?)\)\(\d+\)\.doc'
# 遍历文件夹中的所有文件
for filename in os.listdir('lab_6'):
# 使用正则表达式匹配文件名
match = re.match(pattern, filename)
if match:
# 提取学号和姓名
student_id = match.group(1)
student_name = match.group(2)
# 将学号和姓名写入CSV文件中
with open('CBC.csv', 'a') as f:
f.write(f"{student_id},{student_name}\n")
```
其中,`os.listdir()`函数用于获取指定目录下的所有文件名,`re.match()`函数用于匹配正则表达式。最后将提取出的学号和姓名写入CSV文件中。注意,如果CSV文件已经存在,需要使用追加模式(即`'a'`模式)打开文件,否则会覆盖原有内容。
相关问题
用python实现文件夹lab_6中存放着某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息,格式如实验报告_实验6 Python文件与数据格式化(2040706165_韦懿展).doc。请用正则表达式获取学生姓名、学号存入CBC.csv中。 (提示: ① 共有35条记录,有一些文件命名未按规则; ② 以下代码可输出指定目录中的所有文件的名称
以下是实现代码:
```python
import re
import os
# 匹配学生姓名和学号的正则表达式
pattern = r'\d{10}_(.*?)\)'
# 创建保存姓名和学号的csv文件
with open('CBC.csv', 'w') as f:
f.write('姓名,学号\n')
# 遍历文件夹中的所有文件
for filename in os.listdir('lab_6'):
# 判断文件名是否符合规则
if '实验报告' in filename and filename.endswith('.doc'):
# 匹配学生姓名和学号
match = re.search(pattern, filename)
if match:
name = match.group(1) # 学生姓名
number = filename.split('_')[1] # 学号
# 将姓名和学号写入csv文件
f.write(f'{name},{number}\n')
```
注意,文件名中的学号应该是10位数字,而不是9位。如果实际情况不符合这个规则,需要相应地修改正则表达式。此外,如果文件名中包含英文逗号或双引号等特殊字符,可能会导致csv文件的格式出现问题,需要进行相应的处理。
python文件夹lab_6中存放着某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息。请用正则表达式获取学生姓名、学号存入CBC.csv中。
可以使用Python的re模块来进行正则表达式匹配,再使用csv模块将结果存入CSV文件中。下面是一个示例代码:
```python
import re
import csv
# 定义正则表达式匹配学生姓名和学号
name_pattern = re.compile(r'(\D+)_([0-9]+)\.txt')
# 打开CSV文件并准备写入
with open('CBC.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# 遍历lab_6文件夹下的所有文件
for filename in os.listdir('lab_6'):
# 使用正则表达式匹配学生姓名和学号
match = name_pattern.match(filename)
if match:
name = match.group(1)
student_id = match.group(2)
# 将学生姓名和学号写入CSV文件中
writer.writerow([name, student_id])
```
上述代码中,首先定义了一个正则表达式`name_pattern`,用于匹配学生姓名和学号。然后使用`os.listdir()`函数遍历`lab_6`文件夹下的所有文件,对于每个文件,使用正则表达式匹配学生姓名和学号,并将结果写入CSV文件中。最终生成的CSV文件中每行包含学生姓名和学号两个字段。
阅读全文