adbird(広告鳥) 備忘録

横書き原稿を縦書き原稿にする際の年月表記変換スクリプト

前の記事:横書き原稿を縦書き原稿にする際の年号表記変換スクリプト - adbird(広告鳥) 備忘録 と同じく、今度は年月の置換pythonスクリプト

ChatGPT様々である。

import re
import shutil

# 数字を漢数字に変換する辞書(1〜31)
kanji_nums = {
    i: (
        "十" if i == 10 else
        "十" + "一二三四五六七八九"[i - 11] if 11 <= i <= 19 else
        "二十" if i == 20 else
        "二十" + "一二三四五六七八九"[i - 21] if 21 <= i <= 29 else
        "三十" if i == 30 else
        "三十一" if i == 31 else
        "一二三四五六七八九"[i - 1]
    )
    for i in range(1, 32)
}

input_file = "input.txt"
backup_file = "input.txt.bak"

# バックアップ作成
shutil.copyfile(input_file, backup_file)

# ファイル読み込み
with open(input_file, "r", encoding="utf-8") as f:
    text = f.read()

# 月の変換(12→1の順)
for i in range(12, 0, -1):
    pattern = fr"(?<!\d){i}月"
    replacement = f"{kanji_nums[i]}月"
    text = re.sub(pattern, replacement, text)

# 日の変換(31→1の順)
for i in range(31, 0, -1):
    pattern = fr"(?<!\d){i}日"
    replacement = f"{kanji_nums[i]}日"
    text = re.sub(pattern, replacement, text)

# 上書き保存
with open(input_file, "w", encoding="utf-8") as f:
    f.write(text)

print("変換完了(input.txt 上書き済、バックアップ: input.txt.bak)")