Python移除列表元素下划线时遇TypeError报错求助
解决列表元素去下划线时的TypeError问题
你的问题出在列表里混了字符串和整数类型——re.sub只能处理字符串或字节对象,当遍历到整数2时,自然会抛出TypeError: expected string or bytes-like object。
给你两种可行的解决办法:
方法一:类型判断+正则替换
先判断元素是否为字符串,是就用正则去掉下划线,不是就直接保留原元素:
import re my_list = ['aaa', 'bb_bb', 'cc', 2] my_list = [re.sub('_', '', item) if isinstance(item, str) else item for item in my_list]
这里把循环变量换成item比用_可读性更好,避免和正则方法里的参数混淆。
方法二:类型判断+字符串replace(更高效)
因为只是替换单个下划线,用字符串自带的replace方法比正则更轻量,性能更好:
my_list = ['aaa', 'bb_bb', 'cc', 2] my_list = [item.replace('_', '') if isinstance(item, str) else item for item in my_list]
执行后两种方法都能得到你想要的结果:['aaa', 'bbbb', 'cc', 2]
内容的提问来源于stack exchange,提问作者Hiwot
相关产品推荐
相关产品推荐

