当前位置: 首页 > news >正文

分割函数(Split Function)

分割函数通常用于将一个字符串按照指定的分隔符拆分成多个部分,并返回一个列表。在 Python 中,split() 是字符串的内置方法,用于实现这一功能。


1. str.split() 基本用法

语法

str.split(sep=None, maxsplit=-1)
  • ​**sep**​:分隔符(默认为所有空白字符,如空格、换行 \n、制表符 \t)。
  • ​**maxsplit**​:最大分割次数(默认 -1,表示不限制)。

示例

text = "Hello World Python"
words = text.split()  # 默认按空格分割
print(words)  # ['Hello', 'World', 'Python']

2. 指定分隔符

可以传入 sep 参数来指定分割方式:

csv = "apple,banana,orange"
fruits = csv.split(",")  # 按逗号分割
print(fruits)  # ['apple', 'banana', 'orange']

3. 限制分割次数(maxsplit)​

text = "one two three four"
parts = text.split(maxsplit=2)  # 只分割前两次
print(parts)  # ['one', 'two', 'three four']

4. 处理连续分隔符

如果分隔符连续出现,默认会返回空字符串:

text = "a,,b,,c"
parts = text.split(",")
print(parts)  # ['a', '', 'b', '', 'c']

如果想去掉空字符串,可以结合 filter

parts = list(filter(None, text.split(",")))
print(parts)  # ['a', 'b', 'c']

5. rsplit() 从右分割

rsplit() 从字符串的右侧开始分割:

text = "one two three four"
parts = text.rsplit(maxsplit=1)  # 从右侧分割一次
print(parts)  # ['one two three', 'four']

6. 按行分割(splitlines())​

splitlines() 可以按换行符 \n 分割:

text = "Line1\nLine2\nLine3"
lines = text.splitlines()
print(lines)  # ['Line1', 'Line2', 'Line3']

7. 正则表达式分割(re.split())​

如果需要更复杂的分割规则,可以使用 re.split()

import retext = "apple123banana456orange"
parts = re.split(r"\d+", text)  # 按数字分割
print(parts)  # ['apple', 'banana', 'orange']

8. 自定义分割函数

如果 split() 不能满足需求,可以自己实现分割逻辑:

def custom_split(s, sep):parts = []current = ""for char in s:if char == sep:parts.append(current)current = ""else:current += charif current:  # 添加最后一个部分parts.append(current)return partstext = "a,b,c"
print(custom_split(text, ","))  # ['a', 'b', 'c']

总结

方法说明示例
split()默认按空格分割"a b c".split() → ['a', 'b', 'c']
split(sep)按指定分隔符分割"a,b,c".split(",") → ['a', 'b', 'c']
split(maxsplit=n)限制分割次数"a b c d".split(maxsplit=2) → ['a', 'b', 'c d']
rsplit()从右侧分割"a b c".rsplit(maxsplit=1) → ['a b', 'c']
splitlines()按行分割"a\nb\nc".splitlines() → ['a', 'b', 'c']
re.split()正则表达式分割re.split(r"\d+", "a1b2c") → ['a', 'b', 'c']

常见问题

  1. ​**split() 和 split(" ") 的区别?​**​

    • split() 会合并连续空白字符,而 split(" ") 不会:
      "a  b".split()      # ['a', 'b']
      "a  b".split(" ")   # ['a', '', 'b']
  2. 如何去掉分割后的空字符串?​

    • 使用 filter(None, parts) 或列表推导式:
      parts = [x for x in text.split(",") if x]
  3. 如何分割字符串但保留分隔符?​

    • 使用 re.split() 并捕获分组:
      re.split(r"([,;])", "a,b;c")  # ['a', ',', 'b', ';', 'c']
http://www.xdnf.cn/news/1045045.html

相关文章:

  • 电阻篇---下拉电阻的取值
  • 【运维系列】【ubuntu22.04】Docker安装mysql 8.0.36 教程
  • Java安全管理器-(Security Manager)
  • 《江西南昌棒垒球》一级运动员 vs 二级运动员·棒球1号位
  • Python打卡训练营Day54
  • 【AI学习】【Ubuntu 22.04】【安装Ollama】两种方式
  • 【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案
  • 电脑上的.ssh目录只做什么的
  • 微调技术:Prefix-tuning vs Prompt-tuning vs P-tuning
  • Java设计模式完整学习指南(23+4种模式)
  • 跨域问题之前后端解决办法
  • Photoshop矢量蒙版全教程
  • 我的JavaWeb软件开发作品学生信息管理系统项目/JavaWeb软件开发 课程考察标准
  • 【Bluedroid】蓝牙启动之核心模块(startProfiles )初始化与功能源码解析
  • 性能优化 - 案例篇:11种优化接口性能的通用方案
  • pion/webrtc v4.1.2版本深度解析与应用指南
  • 纺织行业SAP解决方案:无锡哲讯科技助力企业智能化升级
  • docker(学习笔记第一课) 使用nginx +https + wordpress
  • Flutter包管理与插件开发完全指南
  • springboot速通
  • 国产操作系统-银河麒麟本地化部署Ollama国产开源的AI大模型Qwen3
  • 【MFC】树控件的使用详解
  • Spring Framework 7.0发布
  • C++问题:纯虚函数和抽象类
  • C语言进阶:深度解剖数据在内存中的存储(浮点型在内存中的存储)
  • 某网站极验4滑块验证码逆向分析
  • vue2中setTimeout中调用methods方法问题
  • BEV 感知算法评价指标简介
  • 安卓9.0系统修改定制化____安卓 9.0系统修改固件 自动开启USB调试教程 开搞篇 六
  • 【Linux】基于策略模式的简单日志设计