正则表达式拆分文本比split()更灵活:re.split()可处理多种/连续分隔符;re.findall()适合提取数字、单词等目标内容;支持保留分隔符、跳过括号内容及中英文混合分词。

直接用正则表达式拆分文本,比单纯靠 split() 更灵活——尤其当分隔符不固定、有多种类型或需要跳过空项时。
按多种分隔符一次性切分
比如文本里混用了逗号、分号、空格、制表符甚至多个连续空格,用 re.split() 一行就能搞定:
import retext = "apple, banana; orange\tgrape"arr = re.split(r'[,\s;]+', text)- 结果:
['apple', 'banana', 'orange', 'grape']
其中 [,\s;]+ 表示“一个或多个逗号、空白字符(含空格、换行、制表符)或分号”,自动合并连续分隔符,避免空字符串。
提取符合模式的内容(推荐用于数字/单词抽取)
如果目标不是“按分隔符切”,而是“把所有数字/英文单词拎出来”,就该用 re.findall():
- 提取所有整数:
re.findall(r'\d+', '温度25℃,湿度68%,风速12km/h')→['25', '68', '12'] - 提取所有英文单词:
re.findall(r'[a-zA-Z]+', 'Hello世界123Python!')→['Hello', 'Python'] - 提取浮点数:
re.findall(r'-?\d+\.?\d*', '价格:-29.99元,折扣0.8')→['-29.99', '0.8']
保留分隔符或跳过特定部分
有时需要保留分隔符本身,或排除某些干扰内容(如括号、注释),可用带捕获组的模式:
- 保留分隔符:
re.split(r'([,;])', 'a,b;c')→['a', ',', 'b', ';', 'c'] - 跳过括号内内容:
re.findall(r'[^()]+', 'func(a, b) + calc(x)')→['func', ' + calc', ''](再过滤空项即可) - 更稳妥写法:
[x.strip() for x in re.split(r'\([^)]*\)', text) if x.strip()]
处理中文与混合文本
中文文本常需兼顾标点和语义边界。简单空格分词不适用,可结合常见标点:
-
re.split(r'[,。!?;:、\s]+', '你好,世界!今天天气很好。')→['你好', '世界', '今天天气很好', ''] - 加
filter(None, ...)或列表推导式去掉空字符串:[x for x in result if x] - 若需保留标点作独立元素,改用
re.findall(r'[\u4e00-\u9fff]+|[^\u4e00-\u9fff\s]+', text)











