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

如何用Python提取TXT文档中的成绩与学分以计算GPA

Python GPA计算程序文本处理问题解决方案

核心思路:用正则精准匹配目标数据

不用修改原始TXT格式,通过正则表达式精准定位成绩和学分,同时过滤课程名里的干扰项,直接解决你遇到的三个问题:


1. 过滤课程名称中的无关数字

课程名里的数字(如English 1的1)和成绩/学分的数字特征完全不同:成绩是0-100的数值,学分一般是1-5的小数或整数。用正则仅匹配符合成绩、学分范围的数字,就能避开课程名里的干扰项。

2. 消除多余分隔符导致的空字符串

处理每行文本时,先清理首尾空白,再用正则匹配连续空白符(空格、制表符)作为分隔依据,自动过滤空内容,避免分割出空字符串。

3. 避免成绩与学分错误拼接

明确每行结构为课程名 + 成绩 + 学分,用正则匹配课程名(非成绩学分的内容),再单独提取后面的两个数值,从根源上避免数据错误拼接。


示例代码实现

假设你的TXT每行格式类似:English 1 97.0 3.0、Math Ⅱ 85 2.5,可以用以下代码处理:

import re

def extract_gpa_data(file_path):
    gpa_list = []
    # 正则匹配:课程名(非数字开头的内容) + 成绩(0-100的数值) + 学分(0-6的数值)
    pattern = re.compile(r'^(.+?)\s+(\d{1,3}(?:\.\d+)?)\s+(\d{1,2}(?:\.\d+)?)$')
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line:
                continue  # 跳过空行
            match = pattern.match(line)
            if match:
                # 提取成绩和学分并转为浮点数
                score = float(match.group(2))
                credit = float(match.group(3))
                gpa_list.append([score, credit])
    return gpa_list

# 调用示例
data = extract_gpa_data('scores.txt')
print(data)

代码说明

  • 正则^(.+?)\s+(\d{1,3}(?:\.\d+)?)\s+(\d{1,2}(?:\.\d+)?)$:
    • (.+?):非贪婪匹配课程名,直到遇到第一个连续空白符
    • (\d{1,3}(?:\.\d+)?):匹配0-100的成绩(支持整数和小数)
    • (\d{1,2}(?:\.\d+)?):匹配0-6的学分(覆盖常见学分范围)
  • 用strip()清理每行首尾空白,跳过空行避免空字符串问题
  • 通过精准的正则分组,彻底避免课程名干扰数字和数据拼接错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:32:44