LoginSignup
1
0

More than 5 years have passed since last update.

PythonのCSV読み書きで9桁和暦を7桁和暦に変換出力

Posted at

概要

  • 9桁の和暦 すなわち「H30.12.24」、「H30/12/24」な形式の日付を、7桁の和暦 すなわち 「4301224」 のような形式の日付に変換します。
  • かつ、CSVで読み書きします。
  • Python 3.7.2

したいこと

【infile.csv】    【outfile.csv】
「M 1. 1.15」 ーー> 「M 1. 1.15」「1010115」
「T 1. 1.15」 ーー> 「T 1. 1.15」「2010115」
「S 1. 1.15」 ーー> 「S 1. 1.15」「3010115」
「H 1. 1.15」 ーー> 「H 1. 1.15」「4010115」
「R 1. 1.15」 ーー> 「R 1. 1.15」「5010115」
「R12.10.15」 ーー> 「R12.10.15」「5121015」
「R12. 3. 9」 ーー> 「R12. 3. 9」「5120309」

infile.csv

M 1. 1.15
T 1. 1.15
S 1. 1.15
H 1. 1.15
R 1. 1.15
R12.10.15
R12. 3. 9

ソース

convert_wareki9_to_wareki7.py
# CSVファイルを読み込み
import csv
# インプットファイルオープン
infile = open('infile.csv', 'r')
# アウトプットファイルオープン
outfile = open('outfile.csv', 'w', encoding="utf-8")

# ライター準備
writer = csv.writer(outfile, lineterminator='\n')

# infileのレコードを順番に読み込み、outlistのクリア→編集→書き出し、を繰り返す
for row in csv.reader(infile):
    wareki9 = row[0]
    outlist = []
    outlist.append(wareki9)
    wareki7 = []
    for i in range(0,9):
        if i == 0:
            if wareki9[i] == 'M':
                wareki7.append('1')
            elif wareki9[i] == 'T':
                wareki7.append('2')
            elif wareki9[i] == 'S':
                wareki7.append('3')
            elif wareki9[i] == 'H':
                wareki7.append('4')
            elif wareki9[i] == 'R':
                wareki7.append('5')
        elif i==1 or i==2 or i==4 or i==5 or i==7 or i==8:
            if wareki9[i] == ' ':
                wareki7.append('0')
            else:
                wareki7.append(wareki9[i])
    wareki7_int = int(''.join(wareki7))
    outlist.append(wareki7_int)
    writer.writerow(outlist)

# ファイルクローズ
infile.close()
outfile.close()

infileのレコードを順に読み込むループ内では、
  1.読み込んだレコード内容(rowの0番目要素:9桁和暦文字列)を、
    write用リスト outlist へ出力
  2.9桁和暦文字列 wareki9 を先頭から1文字ずつチェック、
    7桁和暦用文字列リスト wareki7 へ対応値を順々に送る
  3.9桁和暦文字列をチェックし終わったらリスト wareki7 の要素を
    join結合し、7桁和暦文字列を得る。
    int型へ変換して、write用リスト outlist へ出力
を行っています。これをinfile内の全レコードが終わるまで繰り返します。

outfile.csv

M 1. 1.15,1010115
T 1. 1.15,2010115
S 1. 1.15,3010115
H 1. 1.15,4010115
R 1. 1.15,5010115
R12.10.15,5121015
R12. 3. 9,5120309

おわり

できました。

1
0
6

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
1
0