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

Python中是否存在接收星期字符串并按指定规则返回对应数字的函数?

Python实现星期字符串转对应数字的方法

当然有办法满足你的需求啦!Python标准库没有直接提供完全匹配这个映射的现成函数,但我们可以用几种简单且可靠的方式来实现,甚至可以封装成复用性强的工具函数。

方法一:利用datetime模块(贴合你的规则)

Python的datetime模块里的weekday()方法刚好符合你的要求:Monday返回0,Tuesday返回1,一直到Sunday返回6。我们可以先把输入的星期字符串解析成日期对象,再调用这个方法:

from datetime import datetime

def get_weekday_num(weekday_str):
    # %A 是匹配完整英文星期名称的格式符
    return datetime.strptime(weekday_str, "%A").weekday()

# 测试示例
print(get_weekday_num("Monday"))   # 输出 0
print(get_weekday_num("Wednesday"))# 输出 2
print(get_weekday_num("Sunday"))   # 输出 6

⚠️ 注意:这个方法默认依赖系统的本地化设置,如果你的系统默认语言不是英文,可能会解析失败。要确保跨环境兼容,可以手动指定英文本地化:

from datetime import datetime
import locale

# 设定英文本地化环境(不同系统写法可能略有不同,比如Linux下可能是'en_US',Windows下是'English_US')
try:
    locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
except locale.Error:
    locale.setlocale(locale.LC_TIME, 'English_US')

def get_weekday_num(weekday_str):
    return datetime.strptime(weekday_str, "%A").weekday()

方法二:自定义字典映射(更灵活可控)

如果不想依赖系统环境,或者需要自定义映射规则,直接建一个字典是最稳妥的方式,逻辑清晰还不容易出问题:

# 按照你的需求定义映射关系
weekday_mapping = {
    "Monday": 0,
    "Tuesday": 1,
    "Wednesday": 2,
    "Thursday": 3,
    "Friday": 4,
    "Saturday": 5,
    "Sunday": 6
}

def get_weekday_num(weekday_str):
    # 加入异常处理,避免传入无效字符串导致崩溃
    if weekday_str not in weekday_mapping:
        raise ValueError(f"不支持的星期字符串:{weekday_str},请输入如'Monday'这类完整英文星期名")
    return weekday_mapping[weekday_str]

# 测试示例
print(get_weekday_num("Friday"))   # 输出 4
print(get_weekday_num("Saturday")) # 输出 5

这种方法的优势在于完全可控,你可以随时调整映射规则,也不用担心系统环境的影响,适合大多数场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:04:10