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

如何使用Python的re.findall提取含特殊字符的字符串分段?

解决按空格拆分字符串并保留特殊字符的问题

你不需要用正则来做这个,直接用Python字符串自带的split()方法就可以完美实现需求:

names = ['S. Planet', 'A. Planet-World', 'Dog World', 'Dog-Cat Planet']
new_names = [x.split() for x in names]
print(new_names)

运行结果就是你要的:

[['S.', 'Planet'], ['A.', 'Planet-World'], ['Dog', 'World'], ['Dog-Cat', 'Planet']]

为什么你之前的代码不行?

你用的正则r"([a-zA-Z]+)"只会匹配连续的英文字母,所以像.、-这些特殊字符会被当成非匹配内容,自然就被过滤掉了——比如S.会只提取出S,Planet-World会被拆成Planet和World(因为-不是字母,正则会跳过它,匹配前后的字母段)。

如果非要用正则实现(不推荐,没必要)

如果你坚持想用正则,那可以匹配除了空格之外的所有字符,正则表达式写成r"\S+"(\S表示非空白字符,+表示匹配一个或多个):

import re
names = ['S. Planet', 'A. Planet-World', 'Dog World', 'Dog-Cat Planet']
new_names = [re.findall(r"\S+", x) for x in names]
print(new_names)

这个也能得到预期结果,但显然split()方法更简单易懂,适合新手使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:54:21