Python中split()能否对同字符串多规则拆分并统一存入列表?
Python 多分隔符拆分字符串实现方法
Python 内置的 str.split() 方法仅支持传入单个分隔符(不传参数时默认按任意空白字符拆分),无法直接同时兼容逗号、空格、换行符多种拆分规则,你可以通过以下两种常用方案实现数字提取需求:
方案1:使用正则表达式 re.split()(推荐)
re 模块的 split() 方法支持传入正则规则匹配多类分隔符,适配性最高:
import re num_list = [] with open("目标文件路径.txt", "r", encoding="utf-8") as f: file_content = f.read() # 按逗号、空格、换行符拆分,过滤空串后转为整型 num_list = [int(item) for item in re.split(r'[,\s\n]', file_content) if item]
正则规则 [,\s\n] 会匹配所有逗号、空白字符、换行符,末尾的 if item 会过滤掉分隔符连续时产生的空字符串,避免出现类型转换错误。
方案2:统一替换分隔符后调用原生 split()
如果不想引入正则模块,可以先将所有分隔符替换为同一种,再调用原生方法拆分:
num_list = [] with open("目标文件路径.txt", "r", encoding="utf-8") as f: file_content = f.read() # 依次将逗号、换行符替换为空格,再按空白字符拆分 file_content = file_content.replace(",", " ").replace("\n", " ") num_list = [int(item) for item in file_content.split() if item]
原生 split() 不传参数时会自动按任意长度的空白字符拆分,自动忽略首尾空白,也可避免出现空元素。
方案对比
- 方案1扩展成本低,后续新增其他分隔符仅需修改正则字符集即可,代码更简洁
- 方案2无需引入额外模块,逻辑更直观,适合对正则语法不熟悉的场景
内容的提问来源于stack exchange,提问作者Anther Eros
相关产品推荐
相关产品推荐

