首页 >> 综合 > 知识问答 >

问python 中 split 函数 字符串拆分深度精讲

2026-11-11 07:59:46

答

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 maxsplitsep 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 版本该函数行为保持一致,本文不构成业务项目强制编码规范,自行修改运行代码产生的报错需要自行排查处理。

 

相关阅读

最新文章