如何在Python中移除文件名.CSV后缀后的多余内容
Python实现文件名处理:移除.CSV之后的所有内容
嘿,这个需求挺常见的,我给你分享几个实用的Python实现方案,你可以根据自己的场景来选:
方案一:使用字符串分割(简单直接)
如果能确定文件名里只会出现一次.CSV,用split方法最快:
filename = "Testfile_20190226114536.CSV.986466.1551204043175" # 只分割一次,避免意外分割到其他内容 split_parts = filename.split(".CSV", 1) clean_filename = split_parts[0] + ".CSV" print(clean_filename) # 输出: Testfile_20190226114536.CSV
这个思路就是把文件名按.CSV拆成两部分,取第一部分再拼接回.CSV,一步到位。
方案二:使用索引切片(更安全)
如果需要考虑文件名里可能没有.CSV的情况,用rfind找到.CSV的位置再切片会更稳妥:
filename = "Testfile_20190226114536.CSV.986466.1551204043175" # 找到.CSV的起始位置 csv_start_pos = filename.rfind(".CSV") if csv_start_pos != -1: # 切片到.CSV的末尾(.CSV长度为4,所以起始位置+4) clean_filename = filename[:csv_start_pos + 4] else: # 如果没有找到.CSV,返回原文件名 clean_filename = filename print(clean_filename)
这个方法会先检查.CSV是否存在,不存在就返回原文件名,避免出现索引错误,容错性更强。
方案三:使用os.path模块(处理复杂扩展名场景)
如果你的文件名可能有多层嵌套的扩展名(比如.CSV.abc.def),可以用os.path.splitext循环分割直到找到.CSV:
import os filename = "Testfile_20190226114536.CSV.986466.1551204043175" current_name, current_ext = os.path.splitext(filename) # 循环分割直到找到.CSV或者没有扩展名 while current_ext != ".CSV" and current_ext: current_name, current_ext = os.path.splitext(current_name) # 最终拼接结果 clean_filename = current_name + current_ext if current_ext == ".CSV" else filename print(clean_filename)
这个方案适合更复杂的文件名结构,不过对于你的需求来说,前两种已经足够好用啦。
内容的提问来源于stack exchange,提问作者Seán Dempsey
相关产品推荐
相关产品推荐

