如何在Python中将‘Tuesday 24th January’转为‘Tuesday 24 January’?
解决方案
方法一:正则表达式精准移除数字后缀(原生Python,无需第三方库)
直接用正则匹配数字后面的st/nd/rd/th后缀,避免误删普通单词中的相同字符。核心思路是只针对数字后的后缀做替换:
import re # 示例输入 raw_date = 'Tuesday 24th January' # 正则替换:捕获数字分组,去掉后面的后缀 formatted_date = re.sub(r'(\d+)(st|nd|rd|th)', r'\1', raw_date) print(formatted_date) # 输出: Tuesday 24 January
这个正则能处理所有日期后缀场景:
- 1st → 1
- 2nd → 2
- 3rd → 3
- 11th → 11
- 22nd → 22
- 33rd → 33
完全不会影响类似Saturday这类单词,因为它的rd前面不是数字,正则不会匹配。
方法二:借助第三方库解析后重新格式化(更严谨)
如果需要确保日期的合法性,推荐用python-dateutil库解析带后缀的日期,再重新输出目标格式:
- 先安装库:
pip install python-dateutil
- 代码实现:
from dateutil import parser raw_date = 'Tuesday 24th January' # 自动解析带后缀的日期字符串 date_obj = parser.parse(raw_date) # 按目标格式输出 formatted_date = date_obj.strftime('%A %d %B') print(formatted_date) # 输出: Tuesday 24 January
这种方法的优势是能校验日期的有效性(比如不会把32nd January当成合法日期),适合对数据严谨性要求高的场景。
内容的提问来源于stack exchange,提问作者tocodeornottocode
相关产品推荐
相关产品推荐

