Python解析特定格式日期时间字符串遇ParserError问题求助
解决dateutil.parser解析带时区描述的日期字符串失败问题
问题重现
执行以下代码解析日期时间字符串时触发ParserError:
from dateutil import parser as date_parser print(date_parser.parse("Fri Dec 01 2023 00:00:00 GMT +0530 (India Standard Time)"))
错误输出:
raise ParserError("Unknown string format: %s", timestr) dateutil.parser._parser.ParserError: Unknown string format: Fri Dec 01 2023 00:00:00 GMT +0530 (India Standard Time)
解决方案
方法1:预处理字符串移除冗余内容
dateutil.parser无法识别字符串中的GMT和括号内的时区描述文本,先清理这些冗余内容再解析:
from dateutil import parser as date_parser raw_dt_str = "Fri Dec 01 2023 00:00:00 GMT +0530 (India Standard Time)" # 移除"GMT "前缀,截断括号及之后的内容 cleaned_dt_str = raw_dt_str.replace("GMT ", "").split(" (")[0] parsed_dt = date_parser.parse(cleaned_dt_str) print(parsed_dt) # 输出:2023-12-01 00:00:00+05:30
方法2:使用datetime.strptime指定精确格式
如果日期字符串格式固定,直接用datetime模块的strptime匹配精确格式,无需依赖dateutil:
from datetime import datetime raw_dt_str = "Fri Dec 01 2023 00:00:00 GMT +0530 (India Standard Time)" # 定义与字符串完全匹配的格式模板 dt_format = "%a %b %d %Y %H:%M:%S GMT %z (%Z)" parsed_dt = datetime.strptime(raw_dt_str, dt_format) print(parsed_dt) # 输出:2023-12-01 00:00:00+05:30
内容的提问来源于stack exchange,提问作者GK21
相关产品推荐
相关产品推荐

