2017-07-20 8 views
0

現在、次のコードを使用して、現在の日付を日、月、年にトリムしようとしています。Pythonで日付をトリムする効率的な方法は何ですか?

#Code from my local machine 
from datetime import datetime 
from datetime import timedelta 

five_days_ago = datetime.now()-timedelta(days=5) 
# result: 2017-07-14 19:52:15.847476 

get_date = str(five_days_ago).rpartition(' ')[0] 
#result: 2017-07-14 

#Extract the day 
day = get_date.rpartition('-')[2] 
# result: 14 

#Extract the year 
year = get_date.rpartition('-')[0]) 
# result: 2017-07 

私は数ヶ月前にこの言語を把握するので、私はPythonの専門家ではないが、私はここにいくつかのことを理解したい:

  1. は、なぜ私はstrの場合は、この2017から07を受け取りました.rpartition()はあなたが何らかのソートセパレータ( - 、/、 "")を宣言したら、文字列を区切っていますか?私は2017年を受け取ることを期待していた...
  2. 日、月、年を分ける効率的な方法はありますか?私は安全でないコードで同じミスを繰り返すことは望まない。

私は以下の技術で自分のコードを試しました。セットアップ:Pythonの3.6.1でのPython 3.5.2(x64)の、Pythonの3.6.1(x64)のとrepl.itと ローカルマシン

Try the code online, copy and paste the line codes

+0

の可能性のある重複(https://stackoverflow.com/questions/30071886/how-to- [pythonで現在の時刻を取得し、年、月、日、時、分に分割する方法は?] get-current-time-in-python-and-break-up-into月 - 日 - 時 - 分) – Dijkgraaf

+0

可能ですが、質問1については説明しません。 –

+0

rpartitionの読み取りhttps://python-reference.readthedocs.io/en/latest/docs/str/rpartition.html&パーティションhttps ://python-reference.readthedocs.io/en/latest/docs/str/partition.html今年のパーティションが必要です。 – Dijkgraaf

答えて

3

次のことを試してみてください。

from datetime import date, timedelta 

five_days_ago = date.today() - timedelta(days=5) 
day = five_days_ago.day 
year = five_days_ago.year 

日付(日付ではなく)を希望する場合はdatetimeの代わりにdateを使用してください。次に、dateオブジェクトの日と年だけのプロパティです。あなたの質問に関しては

rpartitionに関しては、それは(あなたのケースでは、月と日の間にハイフン)右端のセパレータ上に分割することによって動作します - それは、rpartition手段で何rです。したがってget_date.rpartition('-')['2017-07', '-', '14']を返します。

、あなたのアプローチに固執する場合は、partitionで例えばrpartitionを交換する場合は、あなたのyearコードを動作させることになります。

year = get_date.partition('-')[0] 
# result: 2017 

しかし、関連(良い)のアプローチもあります - splitを使用:

parts = get_date.split('-') 
year = parts[0] 
month = parts[1] 
day = parts[2] 
+0

このコードはスムーズに動作しますが、なぜ.rパーティションが失敗したのかまだ分かりません... –

+0

@Alejandro:更新された回答をご覧ください。 – Mac

+0

そして、間違いなく、私はパーティション分割が文字列を分割するための主なツールだと思ったので、今日は非常に貴重なものを学んだが、私は大きな間違いだった。 –

関連する問題