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

Apple ][模拟器开发:如何正确过滤空行实现list命令输出?

解决Apple ][模拟器list命令的空行过滤问题

问题分析

你遇到的核心问题是对Apple ][文件的行格式判断错误:那些看似“空行”的内容实际上包含行号,并不是完全空白的行。比如原文件里的第2行是2(或2 ),不是空字符串,直接用“行为空则跳过”的逻辑会把这些带行号的空白行误判为非空行,要么只输出行号,要么拆分内容时出错。

正确处理逻辑

要实现list命令的预期输出,关键是判断行号之后的实际代码内容是否为空,而不是整行是否为空:

  1. 拆分每行的行号和代码内容部分
  2. 检查代码内容部分是否包含有效字符(去掉前后空白后非空)
  3. 仅保留代码内容非空的行,原样输出

代码实现示例

方式1:手动拆分行号与内容

with open("apple2_source.txt", "r") as f:
    for raw_line in f:
        line = raw_line.rstrip('\n')  # 移除末尾换行符
        # 定位行号结束位置(连续数字的部分)
        num_end = 0
        while num_end < len(line) and line[num_end].isdigit():
            num_end += 1
        # 提取行号后的内容并去除前后空白
        code_content = line[num_end:].strip()
        # 仅输出有有效代码的行
        if code_content:
            print(line)

方式2:正则表达式匹配

如果行格式固定(行号为数字,后跟空白和代码),用正则可以更简洁:

import re

# 匹配行号开头,后跟任意空白,再跟代码内容的正则
line_regex = re.compile(r'^(\d+)\s*(.*)$')

with open("apple2_source.txt", "r") as f:
    for raw_line in f:
        line = raw_line.rstrip('\n')
        match_result = line_regex.match(line)
        if match_result:
            code_content = match_result.group(2).strip()
            if code_content:
                print(line)

效果验证

用你的示例文件测试时,上述代码会自动跳过行号后无内容的行,输出:

1 [line of code 1]
5 [line of code 2]
10 [line of code 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:24:54