Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用daterangeparser库分析日期范围_Python_Python 3.x_Datetime - Fatal编程技术网

Python 使用daterangeparser库分析日期范围

Python 使用daterangeparser库分析日期范围,python,python-3.x,datetime,Python,Python 3.x,Datetime,我正在尝试使用Python3.x中的解析函数解析日期范围,但无法正确执行。非常感谢您的帮助 我的代码 from daterangeparser import parse c = '2018-03-10 - 2018-06-15' s, e = parse(c) print(s, e) 错误是 pyparsing.ParseException: Expected stringEnd (at char 7), (line:1, col:8) daterangeparser库仅支持特定的字符串格式

我正在尝试使用Python3.x中的解析函数解析日期范围,但无法正确执行。非常感谢您的帮助

我的代码

from daterangeparser import parse
c = '2018-03-10 - 2018-06-15'
s, e = parse(c)
print(s, e)
错误是

pyparsing.ParseException: Expected stringEnd (at char 7), (line:1, col:8)

daterangeparser
库仅支持特定的字符串格式

综上所述,这是一种可行的方法:

from datetime import datetime as dt
from daterangeparser import parse

c = '2018-03-10 - 2018-06-15'

test = ' - '.join([dt.strptime(i, '%Y-%m-%d').strftime('%d %b %Y') for i in c.split(' - ')])
# '10 Mar 2018 - 15 Jun 2018'    

res = parse(test)

但是,对于您希望执行的操作,似乎不需要使用
daterangeparser

我认为问题可能在于它希望破折号字符是两个日期之间的分隔符,而不是日期内的日/月/年分隔符。也许可以尝试用斜杠而不是破折号?解析器位于
2018-03-
,因此可能希望第一个破折号是范围分隔符。解析器不支持任何ISO8601字符串,包括这些日期。它们只支持人类风格的字符串。我还看到文档声称支持“大多数日期格式”,但所有示例都使用月份名称,即
10 Jan 2001
而不是
1-10-2001
。我想这实际上是有道理的,因为一个完全数字化的日期可能是不明确的——日-月-年(欧式)或月-日-年(美式)。如果您使用
strtime
解析日期,那么使用
daterangeparser
有什么意义?