python 使用正则表达式获取以下实验报告文件名中的姓名和学号:
时间: 2024-02-16 10:00:07 浏览: 79
假设实验报告文件名的格式为“姓名_学号_实验报告.docx”,可以使用正则表达式来提取姓名和学号。具体代码如下:
```python
import re
filename = "张三_20210001_实验报告.docx"
pattern = r'^(.*)_([0-9]+)_.*$'
match = re.match(pattern, filename)
if match:
name = match.group(1)
student_id = match.group(2)
print("姓名:", name)
print("学号:", student_id)
else:
print("未匹配到结果!")
```
解释一下正则表达式的含义:
- `^`:匹配字符串的开头
- `(.*)`:匹配任意字符任意次,用于提取姓名
- `_`:匹配下划线
- `([0-9]+)`:匹配数字一次或多次,用于提取学号
- `.*$`:匹配任意字符任意次,直到字符串的结尾
如果匹配成功,使用`match.group()`方法可以获取对应的匹配结果。
相关问题
使用正则表达式获取以下实验报告文件名中的姓名和学号: 实验报告_实验3 Python字符串与控制结构(1)(2140639062_张三).doc
以下是获取姓名和学号的正则表达式:
```
\((\d+)_(\w+)\)\.
```
其中,第一个括号内的 `\d+` 表示匹配一个或多个数字,即学号;第二个括号内的 `\w+` 表示匹配一个或多个字母数字字符,即姓名。完整的代码如下:
```python
import re
filename = "实验报告_实验3 Python字符串与控制结构(1)(2140639062_张三).doc"
pattern = r"\((\d+)_(\w+)\)\."
match = re.search(pattern, filename)
if match:
student_id = match.group(1)
name = match.group(2)
print("学号:", student_id)
print("姓名:", name)
else:
print("未匹配到姓名和学号")
```
输出结果:
```
学号: 2140639062
姓名: 张三
```
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文件中每行包含学生姓名和学号两个字段。
阅读全文