假设我们有一个字符串:
string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."
在Python中,除了2014-12-04
之外,我必须删除所有内容,然后使用
time.mktime(datetime.datetime.strptime(string, "%Y-%m-%d").timetuple())
另一方面,在R中,我所要做的只是as.Date(string)
,我以日期形式得到了合适的日期。 Python有这样的东西吗?
答案 0 :(得分:3)
如果您知道字符串中的位置和日期格式,则可以与strptime
一起使用切片:
import datetime as dt
>>> dt.datetime.strptime(string[:10], '%Y-%m-%d').date()
datetime.date(2014, 12, 4)
如果你想使用像熊猫这样的包:
>>> pd.to_datetime(string[:10])
Timestamp('2014-12-04 00:00:00')
您还可以使用dateutil包:
from dateutil.parser import parse
parse(string[:10]).date()
datetime.date(2014, 12, 4)
答案 1 :(得分:2)
fuzzy
的{{1}}参数用于此目的:
dateutil
结果是:
from dateutil.parser import parse
string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."
dt = parse(string, fuzzy=True)
如果您只想要日期,只需使用datetime.datetime(2014, 12, 4, 4, 7, 59)
返回日期对象。
请注意,如果字符串中的其他内容可能合理地成为日期的一部分(例如单词dt.date()
或其他内容),则会导致解析器出现问题。
如果您想查看跳过的内容,请使用March
:
fuzzy_with_tokens
from dateutil.parser import parse
string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."
dt = parse(string, fuzzy=True)
dt, tokens = parse(string, fuzzy_with_tokens=True)
解析为:
tokens
答案 2 :(得分:1)
要在任意文字中查找日期/时间,您可以尝试parsedatetime
module:
>>> import parsedatetime as pdt # $ pip install parsedatetime
>>> text_with_date = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five."
>>> pdt.Calendar().nlp(text_with_date)
((datetime.datetime(2014, 12, 4, 4, 7, 59), 3, 0, 19, '2014-12-04 04:07:59'),)
给定一个datetime
对象,调用.date()
方法,只获取日期部分。
答案 3 :(得分:0)
是的,与Python(R)中的as.Date()类似。 请尝试以下操作:
true_time = pd.to_datetime(your_array, origin ='2000/1/1', unit = 'D')
使用origin
指定参考日期;
使用unit
可以指定特定的步长(例如D-天,ms-毫秒等)
同样在这种情况下,your_array
可以是一个列表。
还有更多信息here。