将日期从numpyarray转换为datetime类型 - >得到神秘的错误

时间:2014-10-17 11:36:29

标签: python datetime numpy

我使用f函数加载文件numpy.loadtxt并想要提取一些日期。 日期的格式如下:15.08. - 21.08.2011

numpyarr = loadtxt(f, dtype=str, delimiter=";", skiprows = 1)  

alldate = numpyarr[:,0][0]

dat = datetime.datetime.strptime(alldate,"%d.%m. - %d.%m.%Y")

这是整个错误:

Traceback (most recent call last):
  File "C:\PYTHON\Test DATETIME_2.py", line 52, in <module>
    dat = datetime.datetime.strptime(alldate,"%d.%m. - %d.%m.%Y")

  File "C:\Python27\lib\_strptime.py", line 308, in _strptime
    format_regex = _TimeRE_cache.compile(format)

  File "C:\Python27\lib\_strptime.py", line 265, in compile
    return re_compile(self.pattern(format), IGNORECASE)

  File "C:\Python27\lib\re.py", line 190, in compile
    return _compile(pattern, flags)

  File "C:\Python27\lib\re.py", line 242, in _compile
    raise error, v # invalid expression
sre_constants.error: redefinition of group name 'd' as group 3; was group 1

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

datetime只保留一个日期&amp;时间,而你的字段包含两个日期和trys将它们提取到一个变量中。具体来说,您收到的错误是因为您已使用%d%m两次。

您可以尝试以下方式:

a = datetime.datetime.strptime(alldate.split('-')[0],"%d.%m. ")
b = datetime.datetime.strptime(alldate.split('-')[1]," %d.%m.%Y")
a = datetime.datetime(b.year, a.month, a.day)

(这不是最好的代码,但它证明了在你的字符串中隐藏了两种不同格式的日期)。