Python提取字符串日期并转换格式(yyyy-mm-dd转yyyy/mm/dd)遇错求助
问题
我尝试从字符串中提取日期,并将日期格式从yyyy-mm-dd转换为yyyy/mm/dd,但操作出现错误,需要技术指导。
以下是我的代码:
import re import datetime str = "2017/09/15 07:11:00" x = re.match( r'([^\s]+)',str) new_x = datetime.datetime.strptime("re.match( r'([^\s]+)',str)", "%Y/%m/%d").strftime("%Y-%m-%d") print(x) print(new_x)
(附:代码及错误类型截图)
错误分析与修复
核心问题
- 未正确使用正则匹配结果:你调用了
re.match但没有提取匹配到的实际日期字符串,反而把re.match的代码片段当成字符串传给strptime,直接导致日期解析失败。 - 格式转换逻辑混淆:原始字符串是
yyyy/mm/dd格式,需要先按该格式解析日期,再转换为yyyy-mm-dd格式,代码里的格式参数对应关系错误。
修复后的代码
import re import datetime # 避免使用Python关键字`str`作为变量名 input_str = "2017/09/15 07:11:00" # 提取日期部分并获取匹配到的字符串 match_result = re.match(r'([^\s]+)', input_str) if match_result: date_segment = match_result.group(1) # 按原始格式解析,再转换为目标格式 converted_date = datetime.datetime.strptime(date_segment, "%Y/%m/%d").strftime("%Y-%m-%d") print(converted_date) else: print("未匹配到有效日期")
更简洁的实现
如果字符串格式固定,日期始终位于开头且以空格分隔,无需使用正则,直接分割字符串即可:
import datetime input_str = "2017/09/15 07:11:00" # 按空格分割取第一部分作为日期字符串 date_segment = input_str.split()[0] converted_date = datetime.datetime.strptime(date_segment, "%Y/%m/%d").strftime("%Y-%m-%d") print(converted_date)
内容的提问来源于stack exchange,提问作者user20030253
相关产品推荐
相关产品推荐

