如何简洁实现列表元素按空格与标点拆分?已尝试regex、split
简洁解决列表元素按空格/标点拆分的问题
嘿,我懂你要的效果——就是把列表里的每个元素都拆成不含空格、不含标点的纯字符片段对吧?之前试了regex和split没找到简洁的方法?其实用Python的re.findall()就能一步搞定,超顺手!
直接上解决方案代码
import re original_list = ['Toms', 'ad sf', "Joe's"] # 用正则匹配所有连续的字母/数字/下划线片段 result = [token for item in original_list for token in re.findall(r'\w+', item)] print(result) # 输出: ['Toms', 'ad', 'sf', 'Joe', 's']
为啥这个方法好用?
r'\w+'这个正则表达式会匹配一个或多个连续的字母、数字、下划线,刚好完美避开空格和所有标点符号,直接提取你需要的纯字符片段。- 如果你的场景里不需要匹配下划线,可以把正则改成
r'[a-zA-Z0-9]+',这样就只提取字母和数字啦。 - 用列表推导式嵌套,把每个元素的拆分结果平铺成一个新列表,代码简洁又易读,不用写一堆循环或者处理split后的冗余内容。
测试验证
针对你给的初始列表['Toms', 'ad sf', "Joe's"],运行上面的代码后,得到的结果完全符合你的目标:['Toms', 'ad', 'sf', 'Joe', 's'],每个元素都没有空格或标点~
内容的提问来源于stack exchange,提问作者Bob Joe
相关产品推荐
相关产品推荐

