anacondaでインストールしたpython3を使っています。
reは標準で入っている正規表現を扱うためのモジュールです。
#やったこと
正規表現のモジュールを使い和暦を西暦にした。
###正規表現について
このサイトを見るのがいいかも。
https://docs.python.jp/3/library/re.html
渡すデータはリストにしました。いい感じに変更してください
wareki_list = ['平成2年','平成10年','昭和40年','平成元年','昭和元年']
import re
for i in range(len(wareki_list)):
if re.match('昭和元年', wareki_list[i]):
wareki_list[i] = 1926
elif re.match('昭和',wareki_list[i]):
wareki_list[i] = 1925 + int(re.sub(r'\D','',wareki_list[i]))
elif re.match('平成元年', wareki_list[i]):
wareki_list[i] = 1989
elif re.match('平成',wareki_list[i]):
wareki_list[i] = 1988 + int(re.sub(r'\D','',wareki_list[i]))
else:
continue
結果はこんな感じになります。
[1990, 1998, 1965, 1989, 1926]
#やってること
bool(re.match('昭和元年', wareki_list[i]))
昭和元年という文字列がリストの中のi番目にあるか見てる。
あったらTrueを返す。
bool(re.match('昭和', wareki_list[i]))
'昭和'
がリストの中のi番目にあるか見てる。
re.sub(r'\D','',wareki_list[i])
\D
は数字以外のキャラクター,re.subは置き換えなのでwareki_listのi番目のstringsの数字以外のキャラクターを''
で取り除いてる。
はじめて記事を書いたけどわかりにくかったら訂正するので教えてください。
###訂正しました
if bool(re.match('昭和元年', wareki_list[i])):
って書いてたのですが,if
がbool
に変換すると教えていただいたので訂正しました。コメントありがとうございます。(2018/9/06)