新手编程问题:如何从文件行字符串提取数字并按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
相关产品推荐
相关产品推荐

