LoginSignup
22
7

More than 1 year has passed since last update.

【令和対応版】Pythonで和暦と西暦を相互に変換するライブラリを作ってみた (jeraconv)

Last updated at Posted at 2019-06-19

jeraconv (Japanese Era Name Converter) とは

Python学習の一環として、パッケージ作成とPypiへの登録をやってみたくて作った習作ライブラリです。
比較的簡単に、和暦と西暦を相互変換できるものを目指して作成しました。
なお、変換の基となるデータは wikipedia の 元号一覧(日本) に準拠しています。

MIT ライセンスで公開中

MITライセンスで公開していますので、誰でも自由に利用してもらって結構ですが、結果の確からしさは保証されていません。
そもそも 元号一覧(日本) の情報を JSON データに落とし込む段階で、一つ一つ手入力する気にはなれなかったため、EXCELの関数を駆使して年号や始期、終期を抽出しています。ここでミスっていれば、当然結果は誤ったものが出力されてしまいます。
お使いになる方は、これらのことをご理解の上で使用するようにお願いいたします。バグ報告などは歓迎します。この記事にコメントしていただけると、作者が暇なときに対応するかもしれません。(基本は休日プログラマーなので・・・)

インストール方法

pip install jeraconv
# 最新版 : version0.2.1

jeraconv でできること

和暦から西暦への変換

from jeraconv import jeraconv

# J2W クラスのインスタンス生成
# このタイミングで変換の要となる JSON データが load される
j2w = jeraconv.J2W()

# ex.1 : 一般的な使用方法
print(j2w.convert('文治6年'))
# result (int)1190

# ex.2 : 全角数字も使用可能
print(j2w.convert('平成31年'))
# result (int)2019

# ex.3 : "1年" は "元年" と書くことも可能
print(j2w.convert('令和元年'))
# result (int)2019

# ex.4 : 存在しない年号を指定すると ValueError を返す
print(j2w.convert('牌孫4年'))
# result ValueError

西暦から和暦への変換

from jeraconv import jeraconv

# W2J クラスのインスタンス生成
# このタイミングで変換の要となる JSON データが load される
w2j = jeraconv.W2J()

# ex.1 : 一般的な使用方法
year = 2019
month = 5
day = 31
print(w2j.convert(year, month, day))
# result (str) 令和1年5月31日

# ex.2 : 辞書型で応答を受け取る場合
print(w2j.convert(year, month, day, return_type='dict'))
# result (dict) {'era': '令和', 'year': 1, 'month': 5, 'day': 31}

# ex.3 : リスト型で応答を受け取る場合
print(w2j.convert(year, month, day, return_type='list'))
# result (list) ['令和', 1, 5, 31]

# ex.4 : タプル型で応答を受け取る場合
print(w2j.convert(year, month, day, return_type='tuple'))
# result (tuple) ('令和', 1, 5, 31)

# ex.5 : 年月日を省略した場合は実行時の年月日を変換
print(w2j.convert())

関連リンク

参考サイト様

22
7
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
7