python 中 split 函数是字符串对象自带的实例方法,核心作用是按照指定分隔符,把一整段字符串切割成多个片段,最终返回一个列表,是文本处理 数据清洗 读取日志 解析 csv 类文本的时候高频使用的方法,不需要导入任何模块,所有字符串都可以直接调用。之所以在入门阶段重点学习这个函数,是因为很多原始数据都是一整行拼接文本,比如一行用逗号或者空格隔开的数据,想要单独取出每一项内容,就必须依靠 split 函数拆分,相比手动循环查找字符,split 写法简洁效率高,也是爬虫 数据分析项目里面处理原始文本的基础工具,理解它的默认规则 分隔符 最大切割次数这些参数,才能避免拆分之后出现空元素这类新手常见问题。
基础语法格式
字符串对象.split (sep=None, maxsplit=-1)
sep 代表分隔符,是可选参数,如果不传这个参数,也就是 sep 等于 None 的时候,函数会自动把任意连续空白字符,包括空格 制表符 换行符都识别成分隔符,并且自动忽略开头和结尾空白,不会生成空字符串。
maxsplit 代表最大切割次数,默认值是负一,代表全部切割,如果设置成数字,就只会切割指定次数,剩下的全部内容作为列表最后一个元素保留。
注意 split 是字符串方法,调用格式是 文本.split (),不是单独写 split (文本),这点新手很容易写混。
基础代码示例
默认空白切割示例
text = "python java c++"
res = text.split ()
print (res)
输出结果是 ['python', 'java', 'c++']
指定逗号分隔符示例
text = "张三,20, 男,北京"
res = text.split (",")
print (res)
输出结果是 [' 张三 ', '20', ' 男 ', ' 北京 ']
设置 maxsplit 参数示例
text = "a b c d e"
res = text.split (" ", maxsplit=2)
print (res)
输出结果是 ['a', 'b', 'c d e']
实战常用场景
场景一 解析一行 csv 文本,把每行内容拆分成独立字段,之后转成数值类型存入列表或者字典。
场景二 读取日志文件,拆分日志里面时间 级别 消息内容,提取需要的日志字段。
场景三 处理用户输入,比如输入一串用空格隔开的数字,split 拆分之后再循环转成 int 类型。
场景四 处理路径文本,按斜杠拆分,提取文件名或者目录层级。
重点注意事项
当 sep 明确指定成某个字符的时候,如果字符串开头 结尾 或者两个分隔符连续相邻,拆分之后列表里面会出现空字符串,这点和默认 sep 等于 None 的行为不一样,是最容易踩坑的地方。
比如 text = "1,,2",text.split (",") 结果是 ['1', '', '2'],中间空字符串就是连续逗号造成的。
split 只能从左向右切割,如果需要从右侧反向切割,要使用 rsplit 函数,rsplit 是 split 的反向版本,同样支持 sep 和 maxsplit 参数。
split 返回结果是新列表,原字符串本身不会发生修改,因为 python 字符串属于不可变类型,调用 split 不会改动原始文本。
分隔符区分大小写,分隔符是中文逗号的时候,必须传入中文逗号,传入英文逗号无法识别,拆分结果就不会按预期切割。
split 和 rsplit 对比表格
| 对比项 | split 函数 | rsplit 函数 |
|---|---|---|
| 切割方向 | 从左往右 | 从右往左 |
| 参数 | sep maxsplit | sep maxsplit |
| 适用场景 | 普通文本拆分,从左侧开始分割 | 只需要拆分末尾部分内容 |
| 返回类型 | 列表 | 列表 |
进阶拓展
split 拆分得到列表之后,经常搭配 enumerate 函数遍历每一项,也可以配合列表推导式,把拆分后的字符串批量转换成数字类型。在处理脏数据的时候,如果拆分之后存在空元素,一般会额外加过滤逻辑,把空字符串剔除,避免后续计算报错。
【常见问题】
问题 1 python 中 split 函数不传 sep 参数的时候是什么切割规则
回答 1 python 中 split 函数不传 sep 参数,也就是 sep 为 None,会自动识别连续空白字符作为分隔符,并且自动去除首尾空白,连续多个空格只会当成一个分隔符,不会产生空元素。
问题 2 python 中 split 函数为什么拆分之后列表里面出现空字符串
回答 1 python 中 split 函数,只要手动指定分隔符,遇到连续相邻分隔符,或者字符串首尾存在分隔符,就会生成空字符串,这个是指定 sep 之后的默认行为,和默认空白切割规则不一样。
问题 3 python 中 split 函数会不会修改原来的字符串
回答 1 python 中 split 函数不会修改原字符串,python 字符串是不可变对象,split 只是根据原文本生成一个新的列表,原始文本保持不变。
问题 4 python 中 split 函数能不能从右边开始切割文本
回答 1 python 中 split 函数只能从左向右切割,如果需要从右侧反向切割,需要使用 rsplit 函数,参数写法和 split 基本一致,适合只拆分末尾几段内容的需求。
【免责申明】
本文内容仅作为 python 中 split 函数的教学参考,代码案例仅适合本地学习练习,不同 python 版本该函数行为保持一致,本文不构成业务项目强制编码规范,自行修改运行代码产生的报错需要自行排查处理。


