Python字符串分割:从基础到进阶

张开发
2026/4/14 23:35:17 15 分钟阅读

分享文章

Python字符串分割:从基础到进阶
字符串分割是编程中常见的操作无论是处理日志文件、解析CSV数据还是提取URL参数都需要用到字符串分割。Python提供了多种字符串分割方法包括基础的split()、rsplit()、partition()以及更强大的正则表达式re.split()。本文将详细介绍这些方法并给出实际案例帮助你掌握Python字符串分割的技巧。1. 基础字符串分割方法1.1str.split()—— 最常用的分割方法split()是Python字符串最常用的分割方法默认按空格分割也可以指定分隔符。语法str.split(sepNone,maxsplit-1)sep分隔符默认为None按空格分割。maxsplit最大分割次数默认为-1不限制。示例sapple banana orangeprint(s.split())# 默认按空格分割# 输出: [apple, banana, orange]sapple,banana,orangeprint(s.split(,))# 按逗号分割# 输出: [apple, banana, orange]sapple,banana,orange,grapeprint(s.split(,,maxsplit2))# 最多分割2次# 输出: [apple, banana, orange,grape]1.2str.rsplit()—— 从右向左分割rsplit()和split()类似但从右向左分割适用于需要从字符串末尾开始分割的情况。示例sapple,banana,orange,grapeprint(s.rsplit(,,maxsplit1))# 从右向左最多分割1次# 输出: [apple,banana,orange, grape]1.3str.partition()—— 分割成3部分partition()将字符串按第一个匹配的分隔符分割成3部分分隔符左边的部分分隔符本身分隔符右边的部分语法str.partition(sep)sep分隔符必须指定。示例sapple,banana,orangeleft,sep,rights.partition(,)print(left,sep,right)# 输出: apple , banana,orangestr.rpartition()rpartition()和partition()类似但从右向左分割。2. 高级字符串分割方法2.1str.splitlines()—— 按行分割splitlines()按换行符\n、\r、\r\n分割字符串适用于处理多行文本。示例sHello\nWorld\nPythonprint(s.splitlines())# 输出: [Hello, World, Python]2.2re.split()—— 正则表达式分割re.split()使用正则表达式进行分割适用于复杂分隔符如多个不同字符。语法importre re.split(pattern,string,maxsplit0,flags0)pattern正则表达式分隔符。maxsplit最大分割次数默认为0不限制。flags正则标志如re.IGNORECASE。示例(1) 按多个不同字符分割importre sapple,banana;orange|grapepartsre.split(r[,;|],s)# 按逗号、分号、竖线分割print(parts)# 输出: [apple, banana, orange, grape](2) 按连续空格分割sapple banana orangepartsre.split(r\s,s)# 按1个或多个空格分割print(parts)# 输出: [apple, banana, orange](3) 保留分隔符使用捕获组sappleDBbananaDBorangepartsre.split(r(DB),s)# 使用捕获组 (DB) 保留分隔符print(parts)# 输出: [apple, DB, banana, DB, orange](4) 过滤掉分隔符sappleDBbananaDBorangeparts[partforpartinre.split(r(DB),s)ifpart!DB]# 过滤掉 DBprint(parts)# 输出: [apple, banana, orange]3. 实际应用案例案例1解析CSV数据importre csv_dataName,Age,City\nAlice,25,New York\nBob,30,Londonlinescsv_data.splitlines()# 按行分割forlineinlines[1:]:# 跳过标题行fieldsre.split(r,(?(?:[^\]*\[^\]*\)*[^\]*$),line)# 处理带引号的CSVprint(fields)# 输出:# [Alice, 25, New York]# [Bob, 30, London]案例2提取URL参数importre urlhttps://www.example.com/search?qpythonlangenpage1queryurl.split(?)[1]# 提取查询部分paramsre.split(r,query)# 按 分割参数print(params)# 输出: [qpython, langen, page1]案例3分割日志文件log2023-01-01 12:00:00 ERROR: File not founddate,time,level,messagelog.split( ,maxsplit3)# 最多分割3次print(date,time,level,message)# 输出: 2023-01-01 12:00:00 ERROR: File not found4. 总结方法适用场景示例str.split()简单分割空格、逗号等a,b,c.split(,)→[a, b, c]str.rsplit()从右向左分割a,b,c.rsplit(,, 1)→[a,b, c]str.partition()分割成3部分a,b,c.partition(,)→(a, ,, b,c)str.splitlines()按行分割a\nb\nc.splitlines()→[a, b, c]re.split()复杂分隔符正则re.split(r’[,;最佳实践简单分割用split()或rsplit()。需要保留分隔符用partition()或re.split(r(...), ...)。复杂分隔符如多个不同字符用re.split()。处理多行文本用splitlines()。掌握这些方法后你可以轻松应对各种字符串分割需求

更多文章