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

为何Python的splitlines()处理连续换行符时会多出空列表项?

问题原因解释

首先明确Python str.splitlines() 方法的核心拆分规则:

  • 行终止符会被作为拆分边界,其中 \r\n 会被识别为单个整体行终止符,不会拆分为两个独立的拆分边界
  • 两个相邻的行终止符之间如果不存在任何内容,拆分后会生成空字符串元素

第一个测试用例逻辑

你第一个测试用例的字符串为 'Milk\nChicken\r\nBread\rButter',其中的行终止符依次为:

  1. \n 位于Milk之后
  2. \r\n 位于Chicken之后(单个整体分隔符)
  3. \r 位于Bread之后

所有行终止符之间都有有效内容,所以拆分结果为 ['Milk', 'Chicken', 'Bread', 'Butter'],没有空项。

第二个测试用例逻辑

第二个测试用例的字符串为 'Milk\nChicken\r\rBread\rButter',其中Chicken之后的行终止符变为两个连续的独立\r:

  1. 第一个\r作为拆分边界,拆分出Chicken
  2. 第二个\r是紧邻的下一个拆分边界,两个\r之间没有任何字符,所以拆分出空字符串
  3. 后续再拆分出Bread和Butter

因此最终结果中会多出一个空列表项。

你可以用极简测试代码验证这个规则:

# \r\n作为整体,无空项
print('a\r\nb'.splitlines()) # 输出 ['a', 'b']
# 两个独立\r,有空项
print('a\r\rb'.splitlines()) # 输出 ['a', '', 'b']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:24:02