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

为什么Python两种文本加载方式统计得到的行数结果不一致

两种Python文本行数统计方式结果差异的原因
  • 编码参数缺失导致的读取差异
    第一种实现调用pathlib.Path.read_text()时没有显式传入encoding='utf-8'参数,Python会自动使用系统默认编码读取文件。即便不会触发解码报错,不同编码对换行相关特殊字符的解析逻辑也可能存在差异,导致splitlines()拆分出多余的行。你可以先修改第一部分代码,显式指定编码后复测:
vocab = pathlib.Path(file_path).read_text(encoding='utf-8').splitlines()

如果修改后两种统计结果一致,即可确认是编码未指定导致的问题。

  • 行分隔符识别规则不同
    str.splitlines()的拆分规则覆盖的分隔符范围远大于文件对象逐行迭代的规则:
    • splitlines()会把\n、\r\n、\r、\f(换页符)、\v(垂直制表符)、Unicode行分隔符(U+2028)、Unicode段分隔符(U+2029)等十多种字符都作为行分隔符拆分
    • for line in f的逐行迭代默认仅识别\n、\r\n、\r三种ASCII换行符作为行分隔符
      如果你的文件中包含splitlines()额外支持的分隔符,就会出现拆分行数更多的情况。你可以对比两个行列表的具体内容,定位多出来的2行,即可确认对应的分隔符类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:06:03