Python多分隔符分割字符串:简化实现及尾随空格处理需求
简洁实现方案
方法1:使用正则表达式 re.split
正则表达式可以直接匹配所有指定分隔符,一次性完成分割,同时自动处理连续分隔符的问题:
import re delimiters = r"[\s,;.?!-:@\[\](){}_*/]" def get_words(sentence): # 按分隔符分割,过滤空字符串 words = re.split(delimiters, sentence) # 过滤停用词和空内容,统一转小写 return [word.lower() for word in words if word and word.lower() not in stopWordsList]
方法2:使用 str.maketrans + str.translate
先把所有分隔符替换为空格,再利用默认split()自动处理首尾空格、连续空格的特性:
delimiters = " \t,;.?!-:@[](){}_*/" # 创建转换表:将每个分隔符映射为空格 trans_table = str.maketrans(delimiters, ' ' * len(delimiters)) def get_words(sentence): # 替换分隔符为空格后分割,自动忽略无效空白 words = sentence.translate(trans_table).split() # 过滤停用词并转小写 return [word.lower() for word in words if word.lower() not in stopWordsList]
优化点说明
- 原代码把
delimiters转列表完全多余,字符串本身可直接用于in判断。 - 循环拼接字符串效率极低(Python字符串不可变,每次拼接都会生成新对象),改用
translate或正则更高效。 - 不带参数的
split()会自动按任意空白字符分割,同时忽略首尾空格和连续空格,完美解决尾随空格问题。 - 列表推导式替代多层循环过滤,代码更紧凑简洁。
内容的提问来源于stack exchange,提问作者qpwoeiruty
相关产品推荐
相关产品推荐

