如何将处理后的干净元素替换回原字符串列表得到清理后的列表?
解决方法
最简洁的方式:列表推导式直接处理
你不需要先筛选出带(case的元素再单独处理,直接遍历原列表的每个元素,对每个元素执行替换操作即可——没有(case后缀的元素替换后不会变化,一步就能得到干净列表:
original_list = ['created_DATE', 'column1(case', 'timestamp', 'location(case'] clean_list = [s.replace("(case", "") for s in original_list] print(clean_list) # 输出: ['created_DATE', 'column1', 'timestamp', 'location']
贴合你原有思路的改进版
如果你想保留先判断再处理的逻辑,可以直接遍历原列表,逐个检查并替换,不需要额外维护两个分离的列表:
original_list = ['created_DATE', 'column1(case', 'timestamp', 'location(case'] clean_list = [] for item in original_list: if "(case" in item: clean_list.append(item.replace("(case", "")) else: clean_list.append(item) print(clean_list)
为什么你原来的方法不好用?
你之前先筛选出str_match再生成new列表,但这两个列表只包含原列表中带(case的元素,没法直接对应回原列表的位置(除非原列表中脏数据的位置和new列表的索引完全对应,但这不是通用情况)。直接遍历原列表处理,能确保每个元素都被正确处理,且位置和原列表一致。
内容的提问来源于stack exchange,提问作者Srikanth S
相关产品推荐
相关产品推荐

