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

Python解析Markdown数据时append行到列表返回空列表问题

你的代码存在三个核心错误,才会导致my_array为空:

  • 第一是条件判断的逻辑层级错误:你将处理数据行的num_fields == 15分支,和年份、队伍判断的分支平级放在了判断val值的分支下,只有当行字段数等于3、且val等于---时才会走到处理数据行的分支,而正常数据行的字段数不等于3,根本不会触发row的赋值逻辑,你看到打印row正确应该是测试时的特殊情况,实际逻辑是不通的。
  • 第二是append语句位置完全错误:你把my_array.append(row)放在了for循环遍历所有行的外面,循环内每次都会把row重置为空列表,就算你中间生成了有效的row,也没有及时添加到my_array里,循环结束后只会把最后一次重置的空row加进去。
  • 第三是变量作用域问题:如果行的字段数不等于3,val变量不会被定义,运行时会直接报错。

修正后可正常运行的代码如下:

with open('adelaide.md', 'r') as f:
    my_array = []
    team = ''
    year = ''
    for line in f:
        row = []
        line = line.strip()
        fields = line.split('|')
        num_fields = len(fields)
        # 先处理队伍、年份行
        if num_fields == 3:
            val = fields[1].strip()
            if val.isnumeric():
                year = val
            elif val != '---':
                team = val
        # 再单独处理数据行
        elif num_fields == 15:
            row.append(team)
            row.append(year)
            for i in range(1, 14):
                row.append(fields[i].strip())
            print(row)
            # 生成有效row后立刻加入数组
            my_array.append(row)

调整后把数据行的判断和队伍年份的判断拆分开,生成有效row后立刻追加到my_array里,就能得到你要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:33:01