Python时间AM与PM互转的代码错误排查及正确实现
解决AM/PM互转的代码逻辑错误
你的代码无法实现AM和PM的正确互转,问题出在连续两次replace的执行逻辑上:
- 对于包含
AM的字符串,第一次replace('AM','PM')会把它改成PM,紧接着第二次replace('PM','AM')又会把刚生成的PM改回AM,等于没有转换。 - 对于包含
PM的字符串,第一次replace找不到AM所以无变化,第二次replace才把PM换成AM,最终只有PM能转成AM,AM无法转成PM。
修复方案
以下几种方法都能实现正确的互转:
方法一:条件判断针对性替换
newtimes = ['10:31 PM', '10:03 PM', '12:26 AM', '07:40 PM', '09:32 PM'] for item in newtimes: if 'AM' in item: converted = item.replace('AM', 'PM') else: converted = item.replace('PM', 'AM') print(converted)
方法二:临时标记过渡替换
用一个不存在的临时标记避免两次替换的冲突:
newtimes = ['10:31 PM', '10:03 PM', '12:26 AM', '07:40 PM', '09:32 PM'] for item in newtimes: converted = item.replace('AM', 'TEMP').replace('PM', 'AM').replace('TEMP', 'PM') print(converted)
方法三:列表推导式批量处理(适合需要保存结果的场景)
newtimes = ['10:31 PM', '10:03 PM', '12:26 AM', '07:40 PM', '09:32 PM'] converted_times = [item.replace('AM', 'PM') if 'AM' in item else item.replace('PM', 'AM') for item in newtimes] for time in converted_times: print(time)
输出结果
以上代码都会输出你期望的结果:
10:31 AM 10:03 AM 12:26 PM 07:40 AM 09:32 AM
内容的提问来源于stack exchange,提问作者vigneshwaran sr
相关产品推荐
相关产品推荐

