Python3.x使用daterangeparser解析日期范围报错求助
解决daterangeparser解析日期范围时的ParseException问题
看起来你遇到的问题是因为daterangeparser默认不支持用**带空格的短横线(-)**作为日期范围的分隔符,它预期的分隔符是to、until这类关键词,所以在解析到你字符串里的-时触发了语法错误。
快速修复方案:修改分隔符为to
把你的日期字符串里的-替换成to,就能正常解析了,示例代码如下:
from daterangeparser import parse c = '2018-03-10 to 2018-06-15' # 替换分隔符为to s, e = parse(c) print(s, e)
运行这段代码应该会输出对应的开始和结束日期对象:
2018-03-10 00:00:00 2018-06-15 00:00:00
进阶方案:自定义解析规则支持-分隔符
如果你必须保留-作为分隔符,可以通过扩展daterangeparser的pyparsing语法来实现。具体做法是添加一个新的分隔符选项,示例代码如下:
from daterangeparser import parse, parser # 向分隔符规则中添加带空格的短横线 parser.range_separator |= parser.pyparsing.Literal(' - ') # 现在就可以解析带空格短横线的日期范围了 c = '2018-03-10 - 2018-06-15' s, e = parse(c) print(s, e)
这段代码修改了原解析器的分隔符规则,让它同时识别-作为范围分隔符,这样你的原始字符串就能正常解析了。
错误原因补充
你遇到的pyparsing.ParseException是因为解析器在处理到第8个字符(也就是第一个空格后的-)时,没有识别到它预期的语法元素(比如to或者其他默认支持的分隔符),所以抛出了错误。调整分隔符或者扩展解析规则就能解决这个问题。
内容的提问来源于stack exchange,提问作者user31735
相关产品推荐
相关产品推荐

