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
相关产品推荐
相关产品推荐

