从Python对象提取日期

从Python对象提取日期,python,datetime,Python,Datetime,我有一个变量,它是Python对象,包含与记录信息的日期和时间相关的信息。它的格式如下 Date_time_Created 2012-06-29 11:23:44.882 2012-07-27 14:53:46.909 2014-05-01 16:12:32.005 2014-10-27 18:25:57.403 2014-10-29 10:58:46.013 2014-11-06 22:24:24.872 2014-11-06 22:26:13.218 2015-02-17 04:48:35.

我有一个变量,它是Python对象,包含与记录信息的日期和时间相关的信息。它的格式如下

Date_time_Created
2012-06-29 11:23:44.882
2012-07-27 14:53:46.909
2014-05-01 16:12:32.005
2014-10-27 18:25:57.403
2014-10-29 10:58:46.013
2014-11-06 22:24:24.872
2014-11-06 22:26:13.218
2015-02-17 04:48:35.229
2015-04-14 07:54:43.969
2015-04-14 07:58:42.896
2015-04-14 08:00:35.552
2015-04-14 08:10:11.627
2015-04-14 08:14:37.842
2015-04-14 08:18:47.501
2015-04-14 08:27:21.895
2015-04-14 08:30:21.376
2015-04-14 08:33:42.146
2015-04-14 08:38:06.271
2015-04-14 08:44:36.056
2015-04-14 08:49:40.434
2015-04-14 08:56:38.785
2015-04-14 08:59:12.542
2015-04-14 09:01:19.538
我希望能够从中提取日期(尽管知道如何计算时间也很有用!)

我已经尝试了以下“应该”使用字符串的方法

match = re.search(r'\d{4}-\d{2}-\d{2}', text)
date = datetime.strptime(match.group(), '%Y-%m-%d').date()
但是,我正在处理的数据的数据类型是Python对象

有什么想法吗


提前谢谢

它不只是一个datetime对象吗

如果是的话,你可以这样

dataobject.date # for year, month, day
dataobject.time # for hour, min, sec, mill


如果您正在使用库,您可以尝试以下方法来解析序列:

date = pd.to_datetime(data_object, format='%Y-%m-%d').dt.date

它不只是一个datetime对象吗

如果是的话,你可以这样

dataobject.date # for year, month, day
dataobject.time # for hour, min, sec, mill


如果您正在使用库,您可以尝试以下方法来解析序列:

date = pd.to_datetime(data_object, format='%Y-%m-%d').dt.date

方法1: 您可以使用dateutil库

如果您想手动执行此操作,以下是您提供的代码,稍作修改: 导入re,日期时间 方法2:

 text ="Date_time_Created 2012-06-29 11:23:44.882 2012-07-27 14:53:46.909 2014-05-01 16:12:32.005 2014-10-27 18:25:57.403 2014-10-29 10:58:46.013 2015-04-14 08:56:38.785 2015-04-14 08:59:12.542 2015-04-14 09:01:19.538"

match = re.findall(r'\d{4}-\d{2}-\d{2}', text)
for i in match:
  date = datetime.datetime.strptime(i, '%Y-%m-%d').date()
  print(date)

如果我用re.finall替换了re.search,那么我会得到一个包含所有日期的列表,并对其进行解析,将其转换为日期。您可以随意处理。

方法1: 您可以使用dateutil库

如果您想手动执行此操作,以下是您提供的代码,稍作修改: 导入re,日期时间 方法2:

 text ="Date_time_Created 2012-06-29 11:23:44.882 2012-07-27 14:53:46.909 2014-05-01 16:12:32.005 2014-10-27 18:25:57.403 2014-10-29 10:58:46.013 2015-04-14 08:56:38.785 2015-04-14 08:59:12.542 2015-04-14 09:01:19.538"

match = re.findall(r'\d{4}-\d{2}-\d{2}', text)
for i in match:
  date = datetime.datetime.strptime(i, '%Y-%m-%d').date()
  print(date)

如果我用re.finall替换了re.search,那么我会得到一个包含所有日期的列表,并对其进行解析,将其转换为日期。您可以随意处理它。

假设您的数据位于.csv文件中:

from datetime import datetime
with open('your.csv') as date_file:
    next(date_file)    
    for line in date_file:
        date_object = datetime.strptime(line.strip(),'%Y-%m-%d %H:%M:%S.%f')
        print("date:%s, time:%s"%(date_object.date(),date_object.time()))
输出将是:

date:2012-06-29, time:11:23:44.882000
date:2012-07-27, time:14:53:46.909000
date:2014-05-01, time:16:12:32.005000
date:2014-10-27, time:18:25:57.403000
date:2014-10-29, time:10:58:46.013000
date:2014-11-06, time:22:24:24.872000
date:2014-11-06, time:22:26:13.218000
date:2015-02-17, time:04:48:35.229000
date:2015-04-14, time:07:54:43.969000
date:2015-04-14, time:07:58:42.896000
date:2015-04-14, time:08:00:35.552000
date:2015-04-14, time:08:10:11.627000
date:2015-04-14, time:08:14:37.842000
date:2015-04-14, time:08:18:47.501000
date:2015-04-14, time:08:27:21.895000
date:2015-04-14, time:08:30:21.376000
date:2015-04-14, time:08:33:42.146000
date:2015-04-14, time:08:38:06.271000
date:2015-04-14, time:08:44:36.056000
date:2015-04-14, time:08:49:40.434000
date:2015-04-14, time:08:56:38.785000
date:2015-04-14, time:08:59:12.542000
date:2015-04-14, time:09:01:19.538000
更新: 熊猫版:

import pandas as pd
df = pd.read_csv('your.csv')
print pd.to_datetime(df['Date_time_Created']).dt.date # access the date
print pd.to_datetime(df['Date_time_Created']).dt.time # access the time

假设您的数据位于.csv文件中:

from datetime import datetime
with open('your.csv') as date_file:
    next(date_file)    
    for line in date_file:
        date_object = datetime.strptime(line.strip(),'%Y-%m-%d %H:%M:%S.%f')
        print("date:%s, time:%s"%(date_object.date(),date_object.time()))
输出将是:

date:2012-06-29, time:11:23:44.882000
date:2012-07-27, time:14:53:46.909000
date:2014-05-01, time:16:12:32.005000
date:2014-10-27, time:18:25:57.403000
date:2014-10-29, time:10:58:46.013000
date:2014-11-06, time:22:24:24.872000
date:2014-11-06, time:22:26:13.218000
date:2015-02-17, time:04:48:35.229000
date:2015-04-14, time:07:54:43.969000
date:2015-04-14, time:07:58:42.896000
date:2015-04-14, time:08:00:35.552000
date:2015-04-14, time:08:10:11.627000
date:2015-04-14, time:08:14:37.842000
date:2015-04-14, time:08:18:47.501000
date:2015-04-14, time:08:27:21.895000
date:2015-04-14, time:08:30:21.376000
date:2015-04-14, time:08:33:42.146000
date:2015-04-14, time:08:38:06.271000
date:2015-04-14, time:08:44:36.056000
date:2015-04-14, time:08:49:40.434000
date:2015-04-14, time:08:56:38.785000
date:2015-04-14, time:08:59:12.542000
date:2015-04-14, time:09:01:19.538000
更新: 熊猫版:

import pandas as pd
df = pd.read_csv('your.csv')
print pd.to_datetime(df['Date_time_Created']).dt.date # access the date
print pd.to_datetime(df['Date_time_Created']).dt.time # access the time

我添加了第二个解决方案,受您提供的代码的影响。如果我有帮助,请不要忘记向上投票并标记为答案,否则我会得到以下错误
TypeError:解析器必须是字符串或字符流,而不是序列。这是否意味着我有一个系列而不是一个对象?我添加了第二个解决方案,受您提供的代码的影响。如果我有帮助,请不要忘记向上投票并标记为答案,否则我会得到以下错误
TypeError:解析器必须是字符串或字符流,而不是序列。这是否意味着我有一个系列而不是一个对象?使用它会给我一个错误
AttributeError:“系列”对象没有属性“日期”
你在使用熊猫库吗?我添加了一些东西,以防你在熊猫库中使用系列,这会给我一个错误
AttributeError:“系列”对象没有属性“日期”
你在使用熊猫库吗?我添加了一些东西,以防你正在使用PandaStanks中的系列,以获得你的回复。我的回答有一个错误,即
'module'对象没有属性“strtime”
请添加
从datetime导入datetime
,检查更新的回答谢谢您的回复。我的回答有一个错误,即
'module'对象没有属性“strtime”
请添加
从datetime导入datetime
,检查更新的答案