Pythonで日付を読みやすい形式で出力する方法【str()とrepr()の違いを解説】
print関数で日付を直接出力すれば、普段どおりの読みやすい形式で日付が表示されます。
例
import datetime today = datetime.date.today() print(today)
出力
次のような結果が得られます。
2018-01-02
これはまさに期待どおりの結果です。ところが、この日付をリストに追加してから表示しようとすると、話が変わってきます。
例
import datetime my_list = [] today = datetime.date.today() my_list.append(today) print(my_list)
出力
今度は次のような結果になってしまいます。
[datetime.date(2018, 1, 2)]
このような出力になるのは、datetimeが「オブジェクト」だからです。つまり、datetimeを操作しているとき、私たちが扱っているのは文字列でもタイムスタンプでもなく、あくまでオブジェクトなのです。
実は、Pythonのすべてのオブジェクトは2種類の文字列表現を持っています。
- 通常の表現:
printで使われるもので、str()関数で取得できます。クラス内の__str__メソッドによって実装されています。 - 代替表現(公式表現):オブジェクトとしての性質(データとしての中身)を表すもので、
repr()関数で取得できます。
リストの中身を表示するとき、Pythonは後者のrepr()による表現を使用するため、先ほどのような出力になったのです。
したがって、期待どおりの形式で日付を取得したい場合は、datetimeオブジェクトに対して明示的にstr()を呼び出す必要があります。
例
import datetime my_list = [] today = datetime.date.today() my_list.append(str(today)) print(my_list)
出力
これで、次のように読みやすい形式で表示されます。
['2018-01-02']
-
Pythonで昨日・今日・明日の日付を取得する方法
Pythonで現在の日付を基準にして、昨日・今日・明日の日付を求めたい場面はよくあります。そのような場合、まずdatetimeモジュールを使って現在の日時を取得し、組み込みのtimedeltaクラスを活用することで、前日や翌日の日付を簡単に計算できます。以下に具体的な実装例を示します。サンプルコードfrom datetime import datetime, timedelta present = datetime.now() yesterday = present - timedelta(1) tomorrow = present + timedelta(1) print(昨日の日付:)
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実