如何移除字符串中属于指定列表的字符 仅保留其余合法字符
实现方法
这里提供两种常用的实现方案,都可以达到你要的效果:
方案1:使用str.maketrans+str.translate(性能最优,适合处理大量文本)
str.maketrans的第三个参数可以直接指定要删除的所有字符,处理逻辑底层是C实现,效率远高于纯Python层遍历:
l = ["Bananas :)", "apple :("] characters_i_dont_want = [":", "a"] # 构建字符删除映射表 delete_table = str.maketrans('', '', ''.join(characters_i_dont_want)) for s in l: # 应用映射删除指定字符 result = s.translate(delete_table) print(result)
运行输出:
Bnns ) pple (
方案2:字符筛选拼接(逻辑直观,适合新手理解)
遍历每个字符串的单个字符,只保留不在排除列表中的字符再拼接成新字符串:
l = ["Bananas :)", "apple :("] characters_i_dont_want = [":", "a"] # 如果排除字符数量多,先转成集合提升查询效率 exclude_set = set(characters_i_dont_want) for s in l: result = ''.join(c for c in s if c not in exclude_set) print(result)
运行输出和方案1完全一致。
内容的提问来源于stack exchange,提问作者kramboll
相关产品推荐
相关产品推荐

