You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助编写基于Excel的Python学生信息查询程序

学生信息查询与导出工具实现方案

1. 优化文件读取逻辑

你原来的代码读取文件后循环打印手机号的方式存在问题,用pd.read_excel可以更简洁地读取工作表并得到DataFrame,同时处理手机号的类型避免匹配错误:

import pandas as pd

# 读取Excel文件的"Math"工作表
df = pd.read_excel('Students.xlsx', sheet_name='Math')
# 将手机号转为字符串类型,避免数值匹配时的格式问题
df['Phone number'] = df['Phone number'].astype(str)

2. 实现多条件搜索功能

写一个函数接收用户输入的关键词,同时匹配姓名、姓氏、手机号,返回匹配的学生信息:

def search_student(keyword, df):
    # 统一转小写,实现不区分大小写的模糊匹配
    keyword = str(keyword).lower()
    # 匹配Name、Last Name、Phone number三列
    match_condition = (
        df['Name'].str.lower().str.contains(keyword) |
        df['Last Name'].str.lower().str.contains(keyword) |
        df['Phone number'].str.contains(keyword)
    )
    # 返回匹配结果
    return df[match_condition]

3. 实现导出功能

利用pandas内置方法,将搜索结果导出为Excel或CSV文件:

def export_result(result, filename, file_type='excel'):
    if file_type == 'excel':
        result.to_excel(f'{filename}.xlsx', index=False)
    elif file_type == 'csv':
        result.to_csv(f'{filename}.csv', index=False, encoding='utf-8')
    print(f"结果已导出到{filename}.{file_type}")

完整运行代码

整合以上逻辑,加上用户交互流程:

import pandas as pd

def main():
    # 读取并预处理数据
    df = pd.read_excel('Students.xlsx', sheet_name='Math')
    df['Phone number'] = df['Phone number'].astype(str)
    
    # 获取用户查询关键词
    keyword = input("请输入要查询的姓名、姓氏或手机号:")
    
    # 执行搜索
    result = search_student(keyword, df)
    
    if result.empty:
        print("未找到匹配的学生信息")
    else:
        print("匹配的学生信息:")
        print(result.to_string(index=False))
        
        # 询问是否导出结果
        export_choice = input("是否导出结果?(y/n):")
        if export_choice.lower() == 'y':
            filename = input("输入导出文件名(不含后缀):")
            file_type = input("选择导出类型(excel/csv):")
            export_result(result, filename, file_type)

def search_student(keyword, df):
    keyword = str(keyword).lower()
    match_condition = (
        df['Name'].str.lower().str.contains(keyword) |
        df['Last Name'].str.lower().str.contains(keyword) |
        df['Phone number'].str.contains(keyword)
    )
    return df[match_condition]

def export_result(result, filename, file_type='excel'):
    if file_type == 'excel':
        result.to_excel(f'{filename}.xlsx', index=False)
    elif file_type == 'csv':
        result.to_csv(f'{filename}.csv', index=False, encoding='utf-8')
    print(f"结果已导出到{filename}.{file_type}")

if __name__ == "__main__":
    main()

测试示例

输入7745879,程序会输出:

匹配的学生信息:
 Name Last Name Phone number Country Mark
 Alex       Sid      7745879  France    C

之后可选择将结果导出为Excel或CSV文件。

内容的提问来源于stack exchange,提问作者Katli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:27:15