如何拆分字符串并保留空白分隔符至独立列表?
解决字符串拆分:分离内容与连续分隔符
这问题挺有意思的,刚好可以用Python的正则表达式来优雅解决。核心思路是把字符串拆分成连续的内容块(也就是你要的单词)和连续的分隔符块,然后分别收集到两个列表里。
实现代码
import re # 你的目标字符串 s = "This is a test for \n a string" # 用正则匹配所有连续的内容块(非空白)和分隔符块(空白) parts = re.findall(r'(\S+|\s+)', s) # 分别提取内容列表a和分隔符列表b a = parts[::2] # 取偶数索引的元素(从0开始,对应内容块) b = parts[1::2] # 取奇数索引的元素(对应分隔符块) # 验证结果 print(a) # 输出: ['This', 'is', 'a', 'test', 'for', 'a', 'string'] print(b) # 输出: [' ', ' ', ' ', ' ', ' \n ', ' ']
代码解释
正则模式说明:
r'(\S+|\s+)'\S+:匹配一个或多个非空白字符(对应你要提取的单词内容)\s+:匹配一个或多个空白字符(包括空格、换行\n、制表符\t等,对应你的分隔符组合)|:表示二选一匹配,括号确保每个匹配的块都会被捕获到结果列表中
切片提取逻辑:
parts[::2]:从索引0开始,每隔2个元素取一个,刚好拿到所有交替出现的内容块parts[1::2]:从索引1开始,每隔2个元素取一个,拿到所有内容块之间的分隔符组合
扩展说明
如果你的分隔符不是空白字符(比如逗号、分号等),只需要修改正则模式即可。比如要匹配逗号+空格的分隔符,模式可以改成r'([^,]+|[, ]+)',核心思路不变——区分内容块和连续分隔符块即可。
内容的提问来源于stack exchange,提问作者fsociety
相关产品推荐
相关产品推荐

