如何解决dateutil.parser._parser.ParserError: Unknown string format错误?
修复dateutil.parser的ParserError错误
错误信息
raise ParserError("Unknown string format: %s", timestr) dateutil.parser._parser.ParserError: Unknown string format: Fall Semester 2018 Printed: Caux, 15/01/2021
原代码示例
import dateutil.parser as dparser text = 'Fall Semester 2018 Printed: Caux, 15/01/2021' date_value = dparser.parse(text) print(date_value)
问题原因
dateutil.parser默认无法从混杂大量无关文本的字符串中准确识别目标日期,字符串里的课程学期、打印地点等内容干扰了解析逻辑,导致解析失败。
修复方案
方案1:精准提取日期子串
直接从字符串中分离出明确的日期部分再解析,适合日期位置固定的场景:
import dateutil.parser as dparser text = 'Fall Semester 2018 Printed: Caux, 15/01/2021' # 分割字符串取最后一段,去除首尾空格得到日期 date_str = text.split(',')[-1].strip() date_value = dparser.parse(date_str) print(date_value)
方案2:启用模糊解析忽略无关内容
利用dateutil.parser的fuzzy=True参数,让解析器自动跳过非日期相关字符:
import dateutil.parser as dparser text = 'Fall Semester 2018 Printed: Caux, 15/01/2021' date_value = dparser.parse(text, fuzzy=True) print(date_value)
注意:如果字符串中存在多个日期格式的数字(比如这里的2018),模糊解析会优先匹配第一个符合日期规则的内容,若需确保解析的是末尾的打印日期,方案1更可靠。
方案3:指定固定格式解析
如果日期格式固定为DD/MM/YYYY,使用datetime.strptime进行精准解析,完全避免歧义:
from datetime import datetime text = 'Fall Semester 2018 Printed: Caux, 15/01/2021' date_str = text.split(',')[-1].strip() date_value = datetime.strptime(date_str, '%d/%m/%Y') print(date_value)
内容的提问来源于stack exchange,提问作者ezpz4pc
相关产品推荐
相关产品推荐

