Python中如何将自定义时间戳转换为datetime.now()格式
解决方案
要将提取到的时间戳转换为目标格式,借助Python的datetime模块即可完成解析与格式化,具体实现如下:
1. 核心思路
- 用
datetime.strptime()按原时间格式解析字符串,将其转换为datetime对象 - 用
datetime.strftime()将datetime对象格式化为你需要的2022-11-03 01:06:09.190000格式,该格式与datetime.now()的输出完全一致
2. 完整代码示例
from datetime import datetime import re # 你的现有正则(可优化为更精准的版本) reTimestamp = r'\d{2}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}:\d{3}' # 模拟TXT文件中的一行内容 line = "[03/11/22 01:05:06:172] 其他数据内容" # 提取时间戳 timestamp_list = re.findall(reTimestamp, line.strip()) if timestamp_list: raw_ts = timestamp_list[0] # 解析原始时间格式:日/月/两位年 时:分:秒:三位毫秒 parsed_dt = datetime.strptime(raw_ts, '%d/%m/%y %H:%M:%S:%f') # 转换为目标格式:四位年-月-日 时:分:秒.六位微秒(自动补零) formatted_ts = parsed_dt.strftime('%Y-%m-%d %H:%M:%S.%f') print(formatted_ts) # 输出:2022-11-03 01:05:06.172000
3. 优化建议:更精准的正则匹配
原正则可能误匹配到非方括号内的类似格式字符串,建议修改正则直接捕获方括号内的时间戳,避免错误:
# 直接捕获方括号内的时间戳内容 reTimestamp = r'\[(\d{2}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}:\d{3})\]' match_result = re.search(reTimestamp, line.strip()) if match_result: raw_ts = match_result.group(1) # 后续解析与格式化步骤同上
内容的提问来源于stack exchange,提问作者CaffeineAndCode
相关产品推荐
相关产品推荐

