import calendarを日本語で表示してみた Python

Pythonのimport calenderでcalendar.LocaleTextCalendar(locale=’ja_jp’)または(locale=’ja_jp.utf-8′)をして、日本語表示ができるか試したところできなかったので、他の方法で日本語表示できないか試してみたら、表示することができなので、その方法を紹介します。
PythonプログラムはColaboratoryで実行しています。

この投稿をするにあたりreplace関数を使ったプログラムがあるのでin演算子とreplace関数について紹介した投稿のリンクを載せておきます。
in演算子とreplace関数の組み合わせ Python


目次

1.始まりの曜日を変更
・通常表示
・”Su”の日曜から表示

2.英語の曜日を日本語に変更

Suを日に置き換え
すべての曜日を日本語に置き換え

3.英語の月を日本語に変更

・Decemberを12月に置き換え
2020年 1~12月のカレンダーを表示
1~12月の月を日本語で表示

4.2020年のカレンダーを日本語で表示

1.始まりの曜日を変更

●通常表示

まず、通常の年と月を指定した表示の仕方がこれになります。

calendar.month()に2020,12を指定して表示すると”Mo”の月曜日から順番に表示されます。別にこのまま日本語にしてもいいのですが、カレンダーは”Su”の日曜始まりが多いので“Su”から順番に表示します。


●”Su”の日曜から表示

曜日を変更してカレンダーを表示するにはcalendar.setfirstweekday(calendar.~英語で曜日指定~)この命令を使います。日曜から順番に表示するには大文字の”SUNDAY”を指定します。calendar.setfirstweekday(calendar.SUNDAY)


2.英語の曜日を日本語に変更

import calenderを使って表示されるカレンダーは文字列が並んだものを表示しているので、replace関数を使って日本語で曜日を表示します。

Suを”日”に置き換え

replace関数を使って”Su”の文字列を日曜の”日”に置き換えています。cal=cal.replace(“Su”,”日”)
“Su”だけではなく他の曜日も日本語の曜日に置き換えてみました。


すべての曜日を日本語に置き換え

すべての曜日を英語から日本語に置き換えるには曜日を表す英語と日本語の2つのリストを作成します。
[“Mo”,”Tu”,”We”,”Th”,”Fr”,”Sa”,”Su”]
[“月”,”火”,”水”,”木”,”金”,”土”,”日”]

これが2つのリストになります。

作成した曜日を表す英語と日本語2つのリストfor文を使ってreplace関数で英語から日本語に置き換えています。まず、for文でweek_eリストに入っている個数分繰り返します。繰り返すときにreplace関数で“Su”=>”日”、”Mo”=>”月”のように置き換えていきます。以下が実行した結果になります。

↓実行結果↓


3.英語の月を日本語に変更

上のプログラムでやった英語の曜日を日本語に置き換えるのとほぼ同じプログラムになります。

●Decemberを12月に置き換え

replace関数で変数calに入っている文字列”December“を”12月“に置き換えています。
12月だけ日本語にしたので、他の月も日本語で表示します。

2020年 1~12月のカレンダーを表示

まず、日本語で表示する前に英語で表示します。

1~12月の全体のカレンダーを表示するにはcalendar.calendar(~指定した年~)このように書きます。
calendar.calendar(2020,m=4)のmは1行に何個の月を表示するのかを決めます。m=4は1~4月まで1行に表示します。
以下が実行結果になります。

↓実行結果↓


1~12月の月を日本語で表示

置き換えるには曜日のときと同じで英語と日本語の月を表す2つのリストを作成します。
[“January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”]
[“1月”,”2月”,”3月”,”4月”,”5月”,”6月”,”7月”,”8月”,”9月”,”10月”,”11月”,”12月”]

これが2つのリストになります。

作成した月を表す英語と日本語2つのリストfor文を使ってreplace関数で英語から日本語に置き換えています。まず、for文でmonth_eリストに入っている個数分繰り返します。繰り返すときにreplace関数で“January”=>”1月”、”February”=>”2月”のように置き換えていきます。以下が実行した結果になります。
※置き換えると日本語の1月~12月がずれるので、半角スペース2個をダブルクォーテーション(“”)で囲んで置き換えるものと組み合わさています。”  “+month_j[i]それでもずれて表示されるのですが、ちょうど真ん中に表示させるやり方がわからないのでこのままにします。

↓実行結果↓


4.2020年のカレンダーをすべて日本語で表示

replace関数for文2個を使ってカレンダーを日本語で表示させてみました。

12行目にある1つ目のfor文で英語の月が入っているリストmonth_eの個数12回繰り返します。繰り返すときに英語から日本語の月にreplace関数で置き換えます。
続いて14行目のfor文で英語の週が入っているリストweek_eの個数7回繰り返します。この繰り返すときに繰り返すときに英語から日本語の曜日にreplace関数で置き換えます。
以下が実行結果になります。

↓実行結果↓