python请用正则表达式获取学生姓名、学号存入CBC.csv中。
时间: 2023-12-10 10:36:59 浏览: 35
假设学生姓名和学号的格式为“姓名:学号”,可以使用正则表达式来匹配并提取信息。以下是一个示例代码:
```python
import re
import csv
# 定义正则表达式
pattern = r'(\w+):(\d+)'
# 读取文本文件
with open('students.txt', 'r') as f:
content = f.read()
# 使用正则表达式提取信息
matches = re.findall(pattern, content)
# 将提取的信息写入 CSV 文件
with open('CBC.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '学号'])
writer.writerows(matches)
```
在上面的代码中,我假设学生姓名和学号之间使用冒号分隔。首先定义了一个正则表达式,使用 `re.findall` 函数匹配文本中所有符合模式的字符串,并将结果存储在 `matches` 变量中。然后使用 `csv.writer` 将匹配结果写入到 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文件中每行包含学生姓名和学号两个字段。
文件夹lab_6中存放着某班学生提交的一次实验报告,实验报告文件名中包含有学生的姓名、学号信息。请用正则表达式获取学生姓名、学号存入CBC.csv中
假设实验报告的文件名格式为"学生姓名-学号-实验报告.xxx",可使用以下Python代码提取学生姓名、学号信息并存入CBC.csv文件中:
```python
import re
import os
import csv
# 定义正则表达式
pattern = r'(\w+)-(\d+)-实验报告\.\w+'
# 获取实验报告文件名列表
file_list = os.listdir('lab_6')
# 创建CSV文件并写入表头
with open('CBC.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['姓名', '学号'])
# 遍历实验报告文件名列表
for file_name in file_list:
# 使用正则表达式匹配学生姓名、学号信息
match = re.match(pattern, file_name)
if match:
name = match.group(1)
id = match.group(2)
# 写入CSV文件
writer.writerow([name, id])
```
上述代码中,首先定义了正则表达式`pattern`,用于匹配文件名中的学生姓名、学号信息。然后使用Python内置模块`os`获取`lab_6`文件夹中的实验报告文件名列表,遍历列表并使用正则表达式匹配学生姓名、学号信息,最后将姓名、学号信息写入CSV文件中。