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

如何获取文本文件中行的长度?现有代码匹配遗漏问题求助

问题解答:为什么长度为5的行未被匹配?

问题背景

你希望获取文本文件中行的长度(而非行号),现有代码如下:

line = initDict.readline()
while line:
    line = initDict.readline()
    print(line)
    if len(line) == 5: # <<< problem
      line = initDict.readline()
      transfer.append(line)

输入内容:

1
22
33335
4444
55555

实际输出仅匹配到最后一行55555,疑问:为什么长度为5的33335(第3行)没有被匹配到?

问题原因

1. 换行符的隐藏影响

readline()方法读取的内容包含行尾的换行符\n(除了文件的最后一行可能没有)。比如你看到的33335,实际读取后是字符串"33335\n",长度为6,自然不会触发len(line) == 5的判断;而最后一行55555作为文件末尾行,没有换行符,长度刚好是5,所以被匹配到。

2. 读取逻辑的混乱

你的代码存在多次无意义的readline()调用:

  • 初始读取第一行后,循环开头又调用readline(),直接跳过了第一行内容;
  • 当匹配到长度符合条件的行时,又额外调用一次readline(),把下一行的内容加入列表,完全偏离了“收集长度为5的行”的需求。

修正后的代码

如果要收集内容长度为5的行(不包含换行符),可以用更简洁的循环方式处理:

transfer = []
# 直接遍历文件对象,逐行读取
for line in initDict:
    # 移除行尾的换行符(保留其他空白字符可改用strip())
    content = line.rstrip('\n')
    if len(content) == 5:
        transfer.append(content)
        print(content)

运行这段代码后,33335和55555都会被匹配到并加入transfer列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:40:38