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

Python报错TypeError: replace()参数2需为str而非datetime.date,求解决方案

解决Python字符串replace()时的TypeError错误

问题分析

你的代码运行时触发TypeError: replace() argument 2 must be str, not datetime.date,核心问题有两个:

  1. 未导入datetime模块就直接调用date.today()(原代码实际会先抛出ImportError,后续才会触发TypeError)
  2. str.replace()方法要求第二个参数必须是字符串类型,但你传入的today是datetime.date对象,不符合参数类型要求

解决方案

步骤1:导入datetime模块

在代码开头添加导入语句,两种方式任选其一:

  • 方式A:import datetime,后续用datetime.date.today()获取日期
  • 方式B:from datetime import date,直接用date.today()获取日期

步骤2:将日期对象转换为字符串

有两种常用转换方式:

  • 直接转字符串:使用str()函数,采用默认的YYYY-MM-DD格式
  • 自定义日期格式:使用strftime()方法,按需求定义格式(比如%Y年%m月%d日)

修改后的完整代码

方式1:默认日期格式

from datetime import date

Letter = '''DEAR <|NAME>
CONGRATULATIONS !
YOU ARE SELECTED FOR THE JOB
DATE : <|DATE> '''
name = input("Enter your Name : ")
today = date.today()

Letter = Letter.replace("<|NAME>", name)
Letter = Letter.replace("<|DATE>", str(today))

print(Letter)

方式2:自定义日期格式

from datetime import date

Letter = '''DEAR <|NAME>
CONGRATULATIONS !
YOU ARE SELECTED FOR THE JOB
DATE : <|DATE> '''
name = input("Enter your Name : ")
today = date.today()

Letter = Letter.replace("<|NAME>", name)
# 自定义格式示例:2024年05月20日
Letter = Letter.replace("<|DATE>", today.strftime("%Y年%m月%d日"))

print(Letter)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:25:22