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

Python文本文件导入与数值处理问题求助:读取并修改数值后保存

解决分数文件处理问题

原代码的核心问题

  1. 分隔符错误:你的文件里名字和分数是用空格分隔的,但代码里用了split(','),导致每一行都被当成一个整体,没法拆分出单独的分数。
  2. 缩进逻辑混乱:g = list(map(convert_numbers, scrSep))缩进在convert_numbers函数内部,根本不会被执行到,而且map的用法也不对——scrSep是二维列表,直接传进去会把整个子列表传给函数,而不是单个元素。
  3. 缺少关键操作:没有对分数执行加5的计算,也没有把结果写入新文件的逻辑。

修正后的完整代码

# 用with语句自动管理文件,不用手动close
with open('class_scores.txt', 'r') as infile, open('scores2.txt', 'w') as outfile:
    for line in infile:
        # 先清掉行首尾的空白,再按空白拆分(兼容多个空格的情况)
        line_parts = line.strip().split()
        # 跳过格式不对的行
        if len(line_parts) != 2:
            continue
        name, score_text = line_parts
        # 转整数、加5、写入新文件
        try:
            original_score = int(score_text)
            new_score = original_score + 5
            outfile.write(f"{name} {new_score}\n")
        except ValueError:
            # 如果分数不是数字,跳过该行
            continue

关键细节说明

  • with语句:自动处理文件的打开和关闭,避免忘记close导致的资源泄漏,是Python操作文件的最佳实践。
  • split()无参数:默认会按任意空白字符(空格、制表符、换行符等)拆分,比split(' ')更灵活,能处理行内多个空格的情况。
  • 异常处理:防止文件中出现非整数的分数(比如写错的字符)导致程序崩溃,直接跳过这类异常行即可。
  • 逐行处理:不需要把整个文件加载到内存,就算文件很大也能高效处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:50:16