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

Python读取文件仅识别最后一行 括号分类存储代码问题排查

代码仅读取最后一行问题分析与修复

问题原因

  • 读取文件逐行获取的line变量默认会携带每行末尾的换行符\n,你提供的测试文件中部分右括号行末尾还有多余空格,直接使用line == 括号的全等判断无法匹配成功,绝大多数行都没有触发存入列表的逻辑,只有无换行符的最后一行可能匹配成功,因此会产生仅读取了最后一行的错觉。
  • 原有分类逻辑存在错误:左小括号(被错误存入listopen3,右大括号}被错误存入listclose1,listopen1全程没有使用场景,分类对应关系混乱。

修复方案

  1. 逐行读取后先调用strip()方法清除字符串首尾的换行符、空格等空白字符,再做匹配判断。
  2. 修正括号分类的对应逻辑,可修改列表名提升可读性,避免匹配错存储位置。
  3. 建议使用with语法管理文件句柄,无需手动调用close()方法,可避免文件忘记关闭的资源泄露问题。

修复后代码示例

open_file = input('Please enter the data file: ')

# 使用with语句自动管理文件关闭
with open(open_file, 'r') as f:
    list_brace_left = []    # 存储左大括号{
    list_bracket_left = []  # 存储左中括号[
    list_paren_left = []    # 存储左小括号(
    list_brace_right = []   # 存储右大括号}
    list_bracket_right = [] # 存储右中括号]
    list_paren_right = []   # 存储右小括号)

    for line in f:
        # 清除首尾空白、换行符
        cleaned_line = line.strip()
        if cleaned_line == '{':
            list_brace_left.append(cleaned_line)
        elif cleaned_line == '[':
            list_bracket_left.append(cleaned_line)
        elif cleaned_line == '(':
            list_paren_left.append(cleaned_line)
        elif cleaned_line == '}':
            list_brace_right.append(cleaned_line)
        elif cleaned_line == ']':
            list_bracket_right.append(cleaned_line)
        elif cleaned_line == ')':
            list_paren_right.append(cleaned_line)

# 输出结果
for items in list_brace_left:
    print(items)
print('----------')
for items in list_bracket_left:
    print(items)
print('----------')
for items in list_paren_left:
    print(items)
print('----------')
for items in list_brace_right:
    print(items)
print('----------')
for items in list_bracket_right:
    print(items)
print('----------')
for items in list_paren_right:
    print(items)
print('----------')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 11:24:04