"文本文件中保存了学生的学号、姓名信息,每个学生的信息占一行。 请统计所有的姓氏,并列出每个姓氏中包含的学生。输出时每行对应一个姓氏,先输出该姓氏学生人数,再依次列出该姓氏所有的学生,行按照姓氏升序顺序,每一行中按照名字升序顺序输出。最后将结果写入result.txt文件中。"
时间: 2025-01-05 18:43:23 浏览: 4
要实现这个任务,我们可以使用Python编程语言。以下是一个详细的步骤和代码示例:
1. **读取文件**:首先,我们需要读取包含学生信息的文本文件。
2. **解析数据**:将每一行的学生信息解析成学号和姓名。
3. **统计姓氏**:统计每个姓氏的学生人数。
4. **排序**:按照姓氏和名字进行排序。
5. **写入结果文件**:将结果写入`result.txt`文件中。
```python
from collections import defaultdict
import os
def read_student_data(file_path):
students = []
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
parts = line.strip().split()
if len(parts) >= 2:
student_id, name = parts[0], ' '.join(parts[1:])
students.append((student_id, name))
return students
def group_students_by_surname(students):
surname_dict = defaultdict(list)
for student_id, name in students:
surname = name.split()[0]
surname_dict[surname].append((student_id, name))
return surname_dict
def sort_surnames_and_names(surname_dict):
sorted_surnames = sorted(surname_dict.keys())
for surname in sorted_surnames:
surname_dict[surname].sort(key=lambda x: x[1])
return sorted_surnames, surname_dict
def write_result_to_file(sorted_surnames, surname_dict, output_file):
with open(output_file, 'w', encoding='utf-8') as file:
for surname in sorted_surnames:
students = surname_dict[surname]
file.write(f"{surname} {len(students)}\n")
for student in students:
file.write(f"{student[1]}\n")
def main():
input_file = 'students.txt'
output_file = 'result.txt'
if not os.path.exists(input_file):
print(f"Input file {input_file} does not exist.")
return
students = read_student_data(input_file)
surname_dict = group_students_by_surname(students)
sorted_surnames, surname_dict = sort_surnames_and_names(surname_dict)
write_result_to_file(sorted_surnames, surname_dict, output_file)
print(f"Results have been written to {output_file}")
if __name__ == "__main__":
main()
```
### 代码说明:
1. **读取文件**:使用`read_student_data`函数读取文件并将学生信息存储在一个列表中。
2. **解析数据**:将每个学生的学号和姓名分开。
3. **统计姓氏**:使用`group_students_by_surname`函数将学生按姓氏分组。
4. **排序**:使用`sort_surnames_and_names`函数对姓氏和名字进行排序。
5. **写入结果文件**:使用`write_result_to_file`函数将结果写入`result.txt`文件中。
### 运行步骤:
1. 将上述代码保存为一个Python脚本文件,例如`process_students.py`。
2. 确保`students.txt`文件与脚本在同一目录下。
3. 在命令行中运行`python process_students.py`。
4. 结果将写入`result.txt`文件中。
阅读全文