在 Python 中,如果需要使用多个分隔符来分割字符串,可以使用 re.split() 方法(来自 re 模块),或者 str.split() 结合循环/列表推导式,以下是几种常见方法:

方法 1:使用 re.split()(推荐)
re.split() 可以使用正则表达式匹配多个分隔符,并返回分割后的列表。
import re text = "apple,banana;orange|grape" separators = r"[,;|]" # 正则表达式,匹配逗号、分号或竖线 result = re.split(separators, text) print(result) # 输出: ['apple', 'banana', 'orange', 'grape']
说明
r"[,;|]"是一个正则表达式,表示匹配 、 或 中的任意一个字符。- 如果分隔符包含特殊字符(如 , , ),需要用
\转义。
方法 2:使用 str.split() + 循环
如果分隔符是固定的几个字符,可以循环调用 split():
text = "apple,banana;orange|grape"
separators = [",", ";", "|"]
result = [text]
for sep in separators:
result = [item for s in result for item in s.split(sep)]
print(result) # 输出: ['apple', 'banana', 'orange', 'grape']
说明
- 这种方法适用于少量分隔符,但效率较低(多次分割)。
方法 3:使用 re.findall() 提取单词
如果目标是提取所有非分隔符的部分,可以用 re.findall():
import re text = "apple,banana;orange|grape" result = re.findall(r"[^,;|]+", text) # 匹配所有非分隔符的字符序列 print(result) # 输出: ['apple', 'banana', 'orange', 'grape']
说明
[^,;|]+表示匹配一个或多个不是 、 或 的字符。
方法 4:使用 str.replace() 替换分隔符
如果分隔符可以统一替换为一个字符,再用 split():

text = "apple,banana;orange|grape"
text = text.replace(",", " ").replace(";", " ").replace("|", " ")
result = text.split()
print(result) # 输出: ['apple', 'banana', 'orange', 'grape']
说明
- 适用于分隔符较少的情况,但代码稍显冗长。
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
re.split() |
多个分隔符,包括正则表达式 | 灵活、高效 | 需要导入 re |
str.split() + 循环 |
少量分隔符 | 不依赖正则 | 代码较繁琐 |
re.findall() |
提取非分隔符部分 | 直接匹配目标 | 需要构造正则 |
str.replace() |
分隔符可统一替换 | 简单直观 | 不适合复杂分隔符 |
推荐使用 re.split(),因为它最简洁且功能强大。
