You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:56