Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 如何指定dateparser解析以将dd/mm/yyyy视为默认值而不是mm/dd/yyyy_Python_Python 2.7_Date_Datetime - Fatal编程技术网

Python 如何指定dateparser解析以将dd/mm/yyyy视为默认值而不是mm/dd/yyyy

Python 如何指定dateparser解析以将dd/mm/yyyy视为默认值而不是mm/dd/yyyy,python,python-2.7,date,datetime,Python,Python 2.7,Date,Datetime,dateparser包非常棒: 一般来说:我需要能够以“印度”日期格式解析日期 我使用的是python 2.7版本 确切地说,我明白了- >>> import dateparser >>> dateparser.parse('Tue, 06/07/2016') datetime.datetime(2016, 6, 7, 0, 0) 我需要 >>> import dateparser >>> dateparser.parse

dateparser包非常棒:

一般来说:我需要能够以“印度”日期格式解析日期

我使用的是python 2.7版本

确切地说,我明白了-

>>> import dateparser
>>> dateparser.parse('Tue, 06/07/2016')
datetime.datetime(2016, 6, 7, 0, 0)
我需要

>>> import dateparser
>>> dateparser.parse('Tue, 06/07/2016')
datetime.datetime(2016, 7, 6, 0, 0)
如果您知道任何可以做到这一点的配置更改,那就太好了。
任何帮助都将不胜感激。:)

您可以使用
datetime.strtime
而不是
dateparser
来执行此操作,因为它是python标准库的一部分:

In [13]:
import datetime as dt
dt.datetime.strptime('Tue, 06/07/2016', '%a, %d/%m/%Y')

Out[13]:
datetime.datetime(2016, 7, 6, 0, 0)
好的,看起来逗号正在打乱
dateparser
,如果您没有在
formats
arg中传递它,那么它会工作:

In [30]:    
import dateparser
dateparser.parse('Tue, 06/07/2016', date_formats=['%A %d/%m/%Y'])

Out[30]:
datetime.datetime(2016, 7, 6, 0, 0)

您可以使用“日期格式”参数:

dateparser.parse('Tue, 06/07/2016', date_formats=['%d %B %Y'])

日期格式链接

dateparser
设置
来处理类似的场景。除了指定日期格式,您还可以使用
日期顺序
设置,如下所示


在[3]中:解析('2016年7月6日星期二',设置={'DATE_ORDER':'DMY'))
Out[3]:datetime.datetime(2016,7,6,0,0)


在此处查找

如果有人仍然面临此问题,您可以查看
设置
documentation dateparser.readthedocs.io/en/latest/Settings.html

正如
user739721
所指出的,您可以并且应该使用
settings={'DATE\u ORDER':'DMY'}
作为
解析的关键字参数。
如果您多次调用
dateparser.parse()
,并且将其添加到任何地方都很痛苦,那么它可能会变得很麻烦。 为此,可以使用python自己的
functools

import functools
import dateparser
parse = functools.partial(dateparser.parse, settings={'DATE_ORDER': 'DMY'})
现在,对parse的任何调用都将使用“DMY”设置

注意:如果最终将设置传递给解析调用,则先前的设置将被覆盖。因此,使用上面的解析定义

In [21]: parse('1 3 1970').strftime("%B")
Out[21]: 'March'

In [22]: parse('1 3 1970', settings={}).strftime("%B")
Out[22]: 'January'

dateparser会自动为我做这件事。编辑问题以使其更具可读性使用
settings={'DATE_ORDER':'DMY'}
关键字参数来
parse
(请参阅我的答案)仍然会生成
datetime.datetime(2016,6,7,0,0)
谢谢@EdChum,但我确实想使用dateparser,因为我可以以任何格式获取日期。我的程序可能输入的内容有:“2015年6月6日”、“2015年6月16日”、“2015年6月16日”等。dateparser有助于无缝解码这些内容。但是我只需要在任何情况下都将mm/dd/yyyy视为dd/mm/yyyy。嗯,这只适用于一个正则表达式。如果我提供dateparser.parse('06/07/2016',date_formats=['%A%d/%m/%Y']),则不起作用。为什么它会起作用?字符串格式完全不同,您需要传递
dateparser.parse('06/07/2016',date_formats=['%d/%m/%Y'])
为了解析该日期,这就是它接受一个格式字符串的原因。基本上,您需要传递一个格式列表来处理任何一种格式,如果某些内容解析不正确,则需要添加其他格式:
date\u formats=['%d/%m/%Y','%A%d/%m/%Y']
将同时使用这两种格式。但在这种情况下,使用dateparser的全部意义都被击败了。它无缝地提取日期,无论格式是什么。我现在用叉子做一个印度格式。完成后将回复。