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

使用正则处理日期格式时遇‘error: bad escape \d’错误求助

解决正则转义错误并实现日期格式替换(11/13.2015 → 11/13/2015)

问题根源分析

你遇到的error: bad escape \d at position 1和功能失效,主要有三个原因:

  1. 字符类误用:你写的"[\d{2}\/\d{2}\.\d{4}]"是正则字符类([]),它只会匹配集合内的单个字符(比如数字、/、.),而非完整的日期模式。
  2. 转义错误:Python字符串中\d会被解析为无效转义序列,必须用原始字符串(前缀r)或者双转义\\d来避免。
  3. 替换逻辑错误:替换目标写的"[\d{2}\/\d{2}\/\d{4}]"同样是字符类,完全不是你想要的日期格式。

另外,原代码中Final_file = File["Date"]得到的是Series而非DataFrame,后续Final_file["Date"]会引发索引错误,需要修正。

正确正则实现代码

要精准替换日期中的.为/(不影响其他可能的.),可以用正则捕获组保留需要的部分,仅替换目标符号:

import pandas as pd
import datetime as dt

# 读取文件
df = pd.read_excel("dotcharacter.xlsx")

# 正则替换:捕获日期段和年份,将中间的.替换为/
df["Date"] = df["Date"].replace(r"(\d{2}/\d{2})\.(\d{4})", r"\1/\2", regex=True)

# 可选:转换为datetime类型再格式化(确保日期格式严格统一)
df["Date"] = pd.to_datetime(df["Date"]).dt.strftime("%m/%d/%Y")

# 保存结果(index=False避免写入多余索引列)
df.to_excel("modified_file.xlsx", index=False)

正则逻辑解释

  • r"(\d{2}/\d{2})\.(\d{4})":
    • (\d{2}/\d{2}):捕获组1,匹配两位数字+斜杠+两位数字(比如11/13)
    • \.:转义后匹配字面意义的.(正则中.默认是通配符,必须转义)
    • (\d{4}):捕获组2,匹配四位数字的年份(比如2015)
  • r"\1/\2":替换时引用捕获组内容,将捕获组1 + / + 捕获组2拼接,实现.到/的替换。

内容的提问来源于stack exchange,提问作者Nani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:54:17