我正在尝试过滤从.csv文件中检索到的日期,但我尝试的组合似乎没有效果。日期为“2011-10-01 19:25:01”或“年 - 月 - 日时:分:秒”。
我只想要年,月和日期,但我似乎无法从字符串中获取时间:
date = bug[2] # Column in which the date is located
date = date.replace('\"','') #getting rid of the quotations
mdate = date.replace(':','')
re.split('$[\d]+',mdate) # trying to get rid of the trailing set of number (from the time)
提前感谢您的建议。
答案 0 :(得分:8)
如果您的来源是字符串,那么您最好使用strptime
import datetime
string = "2011-10-01 19:25:01"
dt = datetime.datetime.strptime(string, "%Y-%m-%d %H:%M:%S")
之后,使用
dt.year
dt.month
dt.day
访问您想要的数据。
答案 1 :(得分:6)
使用datetime将输入解析为日期时间对象,然后以您喜欢的任何格式输出:http://docs.python.org/library/datetime.html
答案 2 :(得分:1)
我认为你把线路和美元线的起点混淆了。试试^[\d-]+
。
答案 3 :(得分:1)
如果格式始终为"YYYY-MM-DD HH:mm:ss"
,请尝试以下操作:
date = date[1:11]
在提示中:
>>> date = '"2012-01-12 15:13:20"'
>>> date[1:11]
'2012-01-12'
>>>
不需要正则表达式
答案 4 :(得分:1)
您的代码的一个问题是,在您的上一个正则表达式中,$
匹配字符串的结尾,因此正则表达式永远不会匹配任何内容。您可以通过按空格分割并仅获取第一个结果来更简单地完成此操作。删除引号后,行
date.split()
将返回["2011-10-01", "19:25:01"]
,因此该列表的第一个元素就是您所需要的。
答案 5 :(得分:1)
>>> date = '"2011-10-01 19:25:01"'
>>> date.strip('"').split()[0]
'2011-10-01'