Python中如何用多分隔符分割字符串并获取所用分隔符?
在Python中按多分隔符分割字符串并保留分隔符列表
这里提供两种实用的方法实现你的需求:
方法1:利用正则split的捕获分组
通过正则表达式的捕获分组,re.split会将分隔符包含在拆分结果中,之后只需通过切片拆分数字和分隔符即可:
import re string = '1000+20-12+123-165-564' # 使用捕获分组匹配+或-,拆分时保留分隔符 split_parts = re.split(r'([+-])', string) # 偶数索引位置是数字(从0开始) numbers = split_parts[::2] # 奇数索引位置是分隔符 delimiters = split_parts[1::2] print(numbers) # 输出: ['1000', '20', '12', '123', '165', '564'] print(delimiters)# 输出: ['+', '-', '+', '-', '-']
如果字符串开头或结尾可能出现分隔符(比如'+1000-20'),可以给数字列表加个过滤:
numbers = [part for part in split_parts[::2] if part]
方法2:遍历正则匹配结果
直接匹配所有数字和分隔符,逐个判断类型并收集:
import re string = '1000+20-12+123-165-564' numbers = [] delimiters = [] # 匹配连续数字或单个+/-的正则模式 pattern = re.compile(r'\d+|[+-]') for match in pattern.finditer(string): item = match.group() if item.isdigit(): numbers.append(item) else: delimiters.append(item) print(numbers) # 输出: ['1000', '20', '12', '123', '165', '564'] print(delimiters)# 输出: ['+', '-', '+', '-', '-']
这种方法逻辑更直观,适合需要对每个匹配项做额外处理的场景。
内容的提问来源于stack exchange,提问作者LordLazor
相关产品推荐
相关产品推荐

