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

如何用列表推导式输出TXT文件中无空格行的行号?

解决思路与代码修改建议

原代码存在的问题

  • 重复打开文件:多次调用open('test.txt')会重复读取文件,既浪费资源也可能导致意外问题。
  • readlines(line)用法错误:readlines()的参数是字节数而非行号,你想获取指定行的逻辑不成立。
  • 行号计数逻辑:原代码用range(len(...))得到的是从0开始的索引,但通常我们需要的是从1开始的实际行号。

修正后的一行代码

利用enumerate可以直接遍历行并获取索引,这是最简洁高效的方式:

[idx + 1 for idx, line in enumerate(open('test.txt')) if ' ' not in line.strip()]

代码说明

  • enumerate(open('test.txt')):遍历文件对象,每次返回行索引(idx)和行内容(line),无需一次性把所有行读入内存,更高效。
  • idx + 1:将默认从0开始的索引转换为从1开始的实际行号,符合日常行号计数习惯。
  • line.strip():去除行首行尾的空白字符,避免因行首尾空格导致误判;如果需要严格检查整行(包括首尾空格),可以去掉.strip()。

原代码的可取之处

你使用列表推导式来实现需求的思路是正确的,只需要修正文件读取和行号获取的细节即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:36:02