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

Python中将字符串分割为可用列表并移除空字符串的方法

解决方法

首先说你遇到的filter问题:Python里filter(None, ...)返回的是迭代器对象,不是列表,所以不能直接下标访问,也不会直接输出元素。解决这个很简单,把它转成列表就行:

import re

s = "(a+b)(b+a)"
# 先分割得到带空字符串的列表
split_list = re.split(r'\(|\)', s)
# 把filter结果转成列表
clean_list = list(filter(None, split_list))
print(clean_list)  # 输出: ['a+b', 'b+a']

或者用更直观的列表推导式,直接过滤空字符串,一步得到列表:

clean_list = [item for item in split_list if item]

不过更高效的方法是直接用re.findall提取括号里的内容,根本不用处理空字符串:

result = re.findall(r'\((.*?)\)', s)
print(result)  # 直接输出: ['a+b', 'b+a']

这个正则\((.*?)\)的意思是匹配(和),并捕获中间的所有内容(非贪婪模式,避免把多个括号里的内容连起来),正好拿到你要的每个表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:39:49