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

如何用Python去除CSV文件名中的时间后缀?

解决方案

先说说你代码里的问题:

  • 直接使用了SSP_AP_INVOICE_DISTRIBUTIONS_17022023072701这个未定义的标识符,应该用你定义好的字符串变量s
  • 你的需求是保留原文件名结构并截断多余时间部分,不是把日期转成dd-mm-yyyy格式,原代码的输出方向不符合需求

方法一:字符串切片(简单高效,适合固定格式文件名)

因为文件名格式固定,直接通过切片截取需要的部分即可:

s = "SSP_AP_INVOICE_DISTRIBUTIONS_17022023072701.csv"
# 拆分文件名主体和后缀
name_body, ext = s.rsplit('.', 1)
# 去掉文件名主体最后6位多余的时间字符,再拼接后缀
new_filename = f"{name_body[:-6]}.{ext}"
print(new_filename)  # 输出: SSP_AP_INVOICE_DISTRIBUTIONS_17022023.csv

或者通过定位最后一个下划线来处理,逻辑更直观:

s = "SSP_AP_INVOICE_DISTRIBUTIONS_17022023072701.csv"
last_underscore_pos = s.rfind('_')
# 截取前缀、前8位日期,再拼接后缀
new_filename = f"{s[:last_underscore_pos+1]}{s[last_underscore_pos+1:last_underscore_pos+9]}.csv"
print(new_filename)

方法二:日期解析(更严谨,适配日期格式可能变化的场景)

如果想用strptime来处理,需要先提取完整的日期时间片段,解析后再格式化回需要的日期格式,最后拼接文件名:

import datetime as dt

s = "SSP_AP_INVOICE_DISTRIBUTIONS_17022023072701.csv"
# 拆分文件名前缀和日期时间+后缀部分
prefix, rest_part = s.split('_', maxsplit=3)
datetime_str, ext = rest_part.split('.', 1)
# 解析完整的日期时间字符串
dt_obj = dt.datetime.strptime(datetime_str, '%d%m%Y%H%M%S')
# 格式化为仅保留日/月/年的字符串
short_date = dt_obj.strftime('%d%m%Y')
# 拼接生成新文件名
new_filename = f"{prefix}_{short_date}.{ext}"
print(new_filename)  # 输出: SSP_AP_INVOICE_DISTRIBUTIONS_17022023.csv

原代码错误修正(仅展示正确解析方式,非最终文件名需求)

如果只是修正你原代码的语法和逻辑问题:

import datetime as dt

s = "SSP_AP_INVOICE_DISTRIBUTIONS_17022023072701.csv"
# 提取日期部分的前8位字符
date_str = s.split('_')[-1].split('.')[0][:8]
temp = dt.datetime.strptime(date_str, '%d%m%Y')
final = temp.strftime('%d-%m-%Y')
print(final)  # 输出: 17-02-2023

内容的提问来源于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 04:01:56