如何移除列表元素的固定路径前缀,提取得到仅含文件名的新列表?
实现方法
你可以根据你使用的Python版本选择对应方案,所有方案最终输出结果都符合你的需求:
方案1:Python 3.9及以上版本首选(str.removeprefix())
这个方法是Python 3.9新增的字符串原生方法,专门用于移除开头的固定前缀,只有字符串开头完全匹配前缀时才会执行移除操作,不会误替换其他位置的相同内容,安全性最高。
# 定义原始列表 original_list = [ 'Cordial/contactactivity/export/bounce/0-ContactActivity-bounce-20211109-131121.csv', 'Cordial/contactactivity/export/bounce/0-ContactActivity-bounce-20211109-131150.csv', 'Cordial/contactactivity/export/bounce/0-ContactActivity-bounce-20211109-131160.csv', 'Cordial/contactactivity/export/bounce/0-ContactActivity-bounce-20211109-131169.csv', 'Cordial/contactactivity/export/bounce/0-ContactActivity-bounce-20211109-131189.csv' ] # 定义要移除的固定前缀 fixed_prefix = 'Cordial/contactactivity/export/bounce/0-ContactActivity-' # 列表推导式生成新列表 new_list = [item.removeprefix(fixed_prefix) for item in original_list]
方案2:兼容所有Python版本(切片法)
如果你的Python版本低于3.9,可以先计算固定前缀的长度,直接对每个字符串做切片处理,只要确认所有列表元素都以该前缀开头,该方法效率最高。
fixed_prefix = 'Cordial/contactactivity/export/bounce/0-ContactActivity-' prefix_length = len(fixed_prefix) new_list = [item[prefix_length:] for item in original_list]
输出结果
两种方案得到的new_list都为:
['bounce-20211109-131121.csv', 'bounce-20211109-131150.csv', 'bounce-20211109-131160.csv', 'bounce-20211109-131169.csv', 'bounce-20211109-131189.csv']
内容的提问来源于stack exchange,提问作者CRP
相关产品推荐
相关产品推荐

