如何修复DOB后处理代码,实现各部分位数合规?
修复DOB格式处理的Python代码
原代码的问题
- Python中字符串是不可变对象,
in_str[0].replace(...)这类操作不会修改原字符串,只是生成新的子串但未保存,原输入字符串完全没变化。 - 依赖固定索引判断(如
in_str[2]、in_str[5])的逻辑太僵硬,一旦输入格式错位不止一位,判断就会失效,且没有正确保存修改后的结果。 - 返回逻辑错误:仅当年份部分长度≤4时返回原字符串,其他情况函数无返回值,最终会返回
None。
修复后的实现思路
先将输入按/分割为日、月、年三部分,分别对每一部分做超长截断(超长时取最后N位,等价于删除首数字直到符合长度要求),最后再拼接回标准格式。
修复后的代码
def dob_postprocessing(in_str): # 分割成日、月、年三个部分 parts = in_str.split('/') if len(parts) != 3: # 若格式不符合三部分结构,直接返回原字符串(可根据需求调整异常处理) return in_str # 处理日:最多2位,超长则取最后两位 day = parts[0][-2:] if len(parts[0]) > 2 else parts[0] # 处理月:最多2位,超长则取最后两位 month = parts[1][-2:] if len(parts[1]) > 2 else parts[1] # 处理年:最多4位,超长则取最后四位 year = parts[2][-4:] if len(parts[2]) > 4 else parts[2] # 拼接为标准格式返回 return f"{day}/{month}/{year}"
测试验证
- 输入:
"11/012/1992"→ 输出:"11/12/1992"(符合示例需求) - 输入:
"123/456/12345"→ 输出:"23/56/2345" - 输入:
"1/2/3"→ 输出:"1/2/3"(短格式不做修改)
内容的提问来源于stack exchange,提问作者Cosmo Boy
相关产品推荐
相关产品推荐

