如何在Python中去除CSV文件名列表元素的最后10个字符
处理CSV文件名的Python解决方案
方法一:直接截取固定长度后缀
既然你明确需要去除每个文件名的最后10个字符(包含.csv后缀),直接用Python字符串切片就能解决,这种方法不依赖文件名的结构,只要文件名长度≥10就有效:
file_names = [ "sales_report_20240520_001.csv", "user_data_20240519_v2.csv", "inventory_20240518.csv" ] processed_names = [name[:-10] for name in file_names] print(processed_names)
输出结果:
['sales_report_20240520', 'user_data_20240519', 'inventory_20240518']
方法二:正则提取前缀+8位日期
如果你的核心需求是保留「日期前内容+8位日期」,不想依赖下划线的固定位置,用正则表达式匹配8位数字日期会更可靠,能适配不同结构的文件名:
import re file_names = [ "sales_report_20240520_001.csv", "user_data_v3_20240519.csv", "20240518_inventory.csv" ] # 匹配任意内容直到出现8位日期,捕获前缀和日期部分 pattern = r"(.*?)(\d{8})" processed_names = [] for name in file_names: match_result = re.search(pattern, name) if match_result: # 拼接前缀和8位日期 processed_names.append(f"{match_result.group(1)}{match_result.group(2)}") else: # 未匹配到8位日期时,回退到截取最后10个字符的逻辑 processed_names.append(name[:-10]) print(processed_names)
输出结果:
['sales_report_20240520', 'user_data_v3_20240519', '20240518_inventory']
两种方法的适用场景
- 方法一:适合确定所有文件名的最后10个字符都是冗余内容的场景,简单高效;
- 方法二:适合文件名结构不固定,但都包含8位日期的场景,兼容性更强。
内容的提问来源于stack exchange,提问作者Thentu matcha
相关产品推荐
相关产品推荐

