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

Python中split()函数的行为疑问:为何不同字符串分割结果存在空值差异?

理解Python中str.split()的分割行为

我来帮你拆解这个疑惑——Python的str.split()方法在处理分隔符时,是按照「分隔符将字符串切割成分隔符前后的所有片段」来工作的,哪怕某些片段是空的,只要分隔符的位置对应了这样的片段,就会被保留下来。

我们逐个分析你的例子:

1. 变量a的情况:a = "1)2",执行a.split(")")

这个字符串的结构是:"1" + ")" + "2"。当用")"作为分隔符切割时,分隔符把字符串分成了分隔符前面的"1"和分隔符后面的"2",这两个片段都是非空的,所以结果就是['1', '2'],长度为2。

2. 变量b的情况:b = ")",执行b.split(")")

这个字符串本身就是一个分隔符,它的结构可以看作:空字符串 + ")" + 空字符串——因为分隔符的前面没有任何字符,后面也没有任何字符。当用")"切割时,split方法会把这两个空片段都保留下来,所以结果就是['', ''],长度同样为2。

举几个额外的例子帮你巩固理解:

  • 如果字符串是")a)",split(")")会得到['', 'a', ''](分隔符前的空片段、中间的a、分隔符后的空片段)
  • 如果字符串是"a))b",split(")")会得到['a', '', 'b'](两个连续分隔符之间的空片段)
  • 如果字符串是"abc"(不含分隔符),split(")")会得到['abc'](仅保留原字符串一个片段)

简单总结:split会保留分隔符对应的所有前后片段,不管是不是空字符串——只有当分隔符不在字符串中时,才会返回仅包含原字符串的列表;如果分隔符在开头、结尾或者连续出现,就会产生空字符串片段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:17:36