使用Python脚本移除Excel文件中Slug末尾的日期
移除Slug末尾日期的解决方案
原代码的问题分析
你用的代码逻辑完全不匹配你的Slug格式:
rsplit(' ', 1)[0]是按空格分割字符串,但你的Slug是用**连字符(-)**分隔的,根本找不到空格,自然会报错。- 函数里的第二个
return df永远不会执行,属于无效代码。
两种可行的实现方法
你的Slug末尾日期都是-数字-月份-年份的固定结构,针对这个特征可以用以下两种方法:
方法1:按连字符分割截取(简单直接)
利用rsplit('-', 3)从字符串末尾开始按-分割3次,把最后三个日期相关的部分去掉,再拼接剩余部分:
def remove_date_from_slug(slug): # 从末尾分割3次,取除最后3部分外的内容拼接 return '-'.join(slug.rsplit('-', 3)[:-3]) # 应用到DataFrame的目标列 outlinks_df['Artist Path'] = outlinks_df['Artist Path'].apply(remove_date_from_slug)
方法2:正则表达式替换(更灵活)
如果日期格式可能有细微变化(比如日期是1位、月份是缩写),用正则匹配末尾的日期结构更稳妥:
import re def remove_date_from_slug(slug): # 匹配末尾的"-数字-英文月份-四位年份"结构 return re.sub(r'-(\d{1,2})-([a-zA-Z]+)-(\d{4})$', '', slug) # 应用到DataFrame的目标列 outlinks_df['Artist Path'] = outlinks_df['Artist Path'].apply(remove_date_from_slug)
异常处理(可选)
如果你的数据里存在没有日期的Slug,可以加个判断避免报错:
def remove_date_from_slug(slug): parts = slug.rsplit('-', 3) # 只有当分割后至少有4个部分时,才移除末尾日期 if len(parts) >= 4: return '-'.join(parts[:-3]) # 否则直接返回原字符串 return slug
测试效果
用你提供的示例Slug测试,两种方法都能得到期望结果:
- 输入:
one-night-of-tina-a-tina-turner-tribute-show-12-december-2023 - 输出:
one-night-of-tina-a-tina-turner-tribute-show
内容的提问来源于stack exchange,提问作者alexqte
相关产品推荐
相关产品推荐

