You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拆分字符串并保留空白分隔符至独立列表?

解决字符串拆分:分离内容与连续分隔符

这问题挺有意思的,刚好可以用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 ', ' ']

代码解释

  1. 正则模式说明:r'(\S+|\s+)'

    • \S+:匹配一个或多个非空白字符(对应你要提取的单词内容)
    • \s+:匹配一个或多个空白字符(包括空格、换行\n、制表符\t等,对应你的分隔符组合)
    • |:表示二选一匹配,括号确保每个匹配的块都会被捕获到结果列表中
  2. 切片提取逻辑:

    • parts[::2]:从索引0开始,每隔2个元素取一个,刚好拿到所有交替出现的内容块
    • parts[1::2]:从索引1开始,每隔2个元素取一个,拿到所有内容块之间的分隔符组合

扩展说明

如果你的分隔符不是空白字符(比如逗号、分号等),只需要修改正则模式即可。比如要匹配逗号+空格的分隔符,模式可以改成r'([^,]+|[, ]+)',核心思路不变——区分内容块和连续分隔符块即可。

内容的提问来源于stack exchange,提问作者fsociety

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:47:16