如何实现两个字符串逐词匹配至末尾星期词并保持比较结果相等
实现方案
核心思路是让两个字符串的生成逻辑完全同源,从根源上避免不同步问题,完全不需要修改你现有的if (failure == success)判断逻辑。
方案1:动态拼接(推荐,零侵入原有判断逻辑)
你之前考虑的day_name变量+拼接的思路是完全可行的,具体实现步骤如下:
- 提取两个字符串共有的固定前缀:
"Today's day is " - 动态获取当日星期值,确保格式和
success末尾的星期格式完全对齐 - 用固定前缀+动态星期值同时生成
failure和success,从生成规则上保证两个值永远一致
可直接运行的代码示例:
from datetime import datetime # 固定前缀,和success的静态部分完全一致 FIXED_PREFIX = "Today's day is " # 获取当前星期全称:%A对应Wednesday这类全写,%a对应Wed这类缩写,按需匹配success的格式即可 current_weekday = datetime.today().strftime("%A") # 同源生成两个字符串,永远保持一致 failure = FIXED_PREFIX + current_weekday success = FIXED_PREFIX + current_weekday
注意事项
- 如果你的
success是其他模块/接口返回的动态值,只需要在每次获取到最新success的同一逻辑块里,同步用相同的规则更新failure即可,不要分开在两个不同的逻辑里分别赋值。 - 不要硬编码字符串切片位置(比如写
success[:14]取前缀),一旦前缀措辞调整、空格变化会直接失效。
方案2:逐词匹配+值同步(适配无法修改success生成逻辑的场景)
如果你没办法改动success的生成逻辑,可以先做逐词校验,校验通过后同步failure的值,保证后续相等判断成立:
# 定义合法星期值集合,和success的星期取值范围对齐 VALID_WEEKDAYS = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"} def sync_and_check(failure: str, success: str) -> tuple[bool, str]: # 按空格拆分两个字符串为词列表 fail_words = failure.split() succ_words = success.split() # 基础长度校验:完整结构是4个固定词+1个星期词,总长度为5 if len(fail_words) != 5 or len(succ_words) != 5: return False, failure # 校验前4个固定词完全匹配 if fail_words[:4] != ["Today's", "day", "is"] or succ_words[:4] != ["Today's", "day", "is"]: return False, failure # 校验两个字符串的最后一个词均为合法星期值 if fail_words[-1] in VALID_WEEKDAYS and succ_words[-1] in VALID_WEEKDAYS: # 校验通过后同步failure的值和success完全一致,保证后续相等判断成立 return True, success return False, failure # 调用示例 check_result, failure = sync_and_check(failure, success) if check_result: # 后续你原有的判断逻辑可以正常生效 if failure == success: # 写你的业务逻辑即可 pass
内容的提问来源于stack exchange,提问作者bstapies
相关产品推荐
相关产品推荐

