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

新手编程问题:如何从文件行字符串提取数字并按A/B分类为列表

解决方案

你的代码问题在于直接将整行内容(包含前缀字母、空格和换行符)添加到了列表中,需要提取纯数字部分并清理多余字符。以下是修正后的代码及说明:

修正后的代码

def number_check():
    list_a = []
    list_b = []
    # 使用with语句安全打开文件,自动处理关闭
    with open('numberfile', 'r') as file:
        for line in file:
            # 去除首尾空白字符(包括换行符\n)
            cleaned_line = line.strip()
            # 跳过空行(避免处理无效内容)
            if not cleaned_line:
                continue
            # 拆分前缀字母和数字部分
            prefix, number = cleaned_line.split()
            # 根据前缀将数字加入对应列表
            if prefix == 'A':
                list_a.append(number)
            elif prefix == 'B':
                list_b.append(number)
    # 按期望格式输出
    print(f"List A: {list_a}")
    print(f"List B: {list_b}")

# 调用函数
number_check()

关键修改点

  • 提取纯数字:通过strip()清理每行的换行符和首尾空格,再用split()将行拆分为前缀和数字,直接提取数字部分加入列表,避免了原结果中的A 、\n等多余内容。
  • 安全文件操作:使用with语句管理文件,无需手动调用close(),防止资源泄漏。
  • 变量作用域优化:将列表list_a、list_b定义在函数内部,避免全局变量带来的副作用。
  • 严谨的条件判断:用elif替代第二个独立if,确保一行内容只会匹配一个前缀(虽然示例中不会出现冲突,但代码更健壮)。

运行修正后的代码,即可得到你期望的输出:

List A: ['47', '126', '36']
List B: ['175', '2781']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:20:37