如何在Python 2.7中将带'th'的日期转换为可比较日期格式?
不用升级Python 2.7也能搞定日期格式转换!
嘿,我明白你的困扰——不想升级Python版本又要处理这种带序数词的日期字符串对吧?完全可以用Python标准库搞定,不用依赖dateutil,下面是具体的实现方法:
核心思路
- 先把日期里的序数后缀(比如
st/nd/rd/th)去掉,因为Python的strptime默认不识别这些后缀 - 用标准库
datetime解析处理后的字符串 - 再格式化为你需要的
YYYY-MM-DD格式
具体代码实现
import re from datetime import datetime def convert_ordinal_date(date_str): # 用正则表达式去掉日期中的序数后缀 cleaned_date = re.sub(r'(\d+)(st|nd|rd|th)', r'\1', date_str) # 解析清洗后的日期字符串 parsed_date = datetime.strptime(cleaned_date, '%A, %B %d, %Y') # 格式化为目标格式 return parsed_date.strftime('%Y-%m-%d') # 测试一下 test_date = "Saturday, May 18th, 2019" print(convert_ordinal_date(test_date)) # 输出: 2019-05-18
代码解释
- 正则表达式
r'(\d+)(st|nd|rd|th)'会匹配所有带序数后缀的数字,替换成纯数字,比如把18th变成18 strptime的格式符:%A对应星期全名(比如Saturday),%B对应月份全名(比如May),%d对应两位日期,%Y对应四位数年份- 最后用
strftime('%Y-%m-%d')把解析后的日期对象转成你需要的格式
这个方案完全基于Python 2.7的标准库,不需要安装任何第三方包,刚好适配你的需求~
内容的提问来源于stack exchange,提问作者DiamondJoe12
相关产品推荐
相关产品推荐

