2016-04-01 14 views
2

は、我々は、文字列があるとしましょう:PythonでPythonにはas.Date()がありますか?

string = "2014-12-04 04:07:59 <font color='green'> info:</font> One, two, three, four, five." 

、私はその後、Rで、一方

time.mktime(datetime.datetime.strptime(string, "%Y-%m-%d").timetuple()) 

を使用し、2014-12-04以外をすべて削除する必要があるだろう、私がしなければならないすべてのas.Date(string)であり、日付形式で適切な日付を取得します。 Pythonには次のようなものがありますか?

+4

) [0]、 '%Y-%m-%d')) '?そうではありません - あなたは日付の候補が何であるかを選ぶ必要があります(複数のフォーマットがある場合はどうなりますか - 異なるフォーマットでは言及しません)。 –

+0

サードパーティのライブラリ 'dateutil'は、幅広いフォーマットの日付を解析するのに役立ちます。しかし、渡す文字列はまだ日付のように見える必要があります。私はそれが文字列内の日付のように見えるものを探すとは思わないし、それを解析しようとします。 – mgilson

+0

@mgilson nope - まだ文字列に日付だけが含まれていると期待しています... –

答えて

2

あなたは、文字列内の場所と日付の書式設定を知っている場合、あなたは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

ND任意のテキスト内の日付/時刻に、あなたはparsedatetime moduleを試みることができる:datetimeオブジェクトを考えると

>>> 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'),) 

、唯一の日付部分を取得するには、.date()メソッドを呼び出します。

2

dateutilからfuzzy引数は、まさにこの目的のために使用されます。

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はに解決:あなたは `datetime.strptime(string.partition(」「別に意味

(' ', " <font color='green'> info:</font> One, two, three, four, five.") 
関連する問題