为什么Python的string.split方法指定分割次数后返回多余元素?
问题原因解答
你对str.split()方法的第二个参数作用存在误解,该参数名为maxsplit,代表最大分割次数,而非最终返回的元素数量。
核心规则说明
str.split(sep, maxsplit)的maxsplit参数指定分割操作的最大执行次数- 当
maxsplit设置为n时,最多执行n次分割,最终返回n+1个元素 - 达到最大分割次数后,剩余未拆分的所有字符会整体作为最后一个元素返回
代码运行逻辑拆解
你提交的代码如下:
MyString = "150 250 400 480" MyString = MyString.split(" ",2) print(MyString)
你指定maxsplit=2,即最多执行2次空格分割,执行流程如下:
- 第一次分割:从第一个空格位置拆分,得到第一个元素
'150',剩余待处理内容为'250 400 480' - 第二次分割:从第二个空格位置拆分,得到第二个元素
'250',剩余待处理内容为'400 480' - 已达到最大分割次数,停止操作,剩余内容直接作为第三个元素返回,因此最终输出为
['150', '250', '400 480']
预期效果实现方案
如果你想只获取前2个分割结果,可以使用以下两种方式:
- 把
maxsplit设置为1,执行1次分割直接得到2个元素:
MyString.split(" ", 1)
- 分割完成后通过切片取前2个元素:
MyString.split(" ")[:2]
内容的提问来源于stack exchange,提问作者Guilherme Mendonça
相关产品推荐
相关产品推荐

