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

Python正则拆分驼峰字符串时如何将所有匹配结果合并为单个列表

问题根因

当前代码在for循环内部每次都会为单个匹配结果新建一个独立列表,没有预先定义全局的结果列表存储所有匹配项,循环过程中每次生成的单元素列表互不关联,最终只能输出分散的单元素列表,无法得到整合后的完整单词列表。

修正方案

方案1:保留finditer写法

在循环外部提前初始化一个空列表,每次循环拿到匹配到的单词后,用append()方法将单词追加到这个预定义的结果列表中,循环全部执行完成后再打印结果列表即可。
修正后代码:

import re
n = "SafaNeelHelloAByeSafaJasleen"
patt = re.compile(r'([A-Z][a-z]*|[a-z$])')
matches = patt.finditer(n)
# 提前初始化空列表存储所有匹配结果
word_list = []
for match in matches:
    current_word = match.group()
    word_list.append(current_word)
print(word_list)

方案2:更简洁的findall写法

正则的findall()方法会直接返回所有匹配结果组成的列表,不需要手动循环追加,代码更简洁:

import re
n = "SafaNeelHelloAByeSafaJasleen"
patt = re.compile(r'([A-Z][a-z]*|[a-z$])')
word_list = patt.findall(n)
print(word_list)

两种方案运行后都会输出预期结果:

['Safa', 'Neel', 'Hello', 'A', 'Bye', 'Safa', 'Jasleen']

注意:不要用list作为变量名,list是Python内置的列表类型关键字,用作变量名会覆盖内置方法,引发后续代码异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:21:23