奥村 晴彦 キャッシュレス消費者還元事業登録リストのCSV化のコメント追加

奥村 晴彦 キャッシュレス消費者還元事業登録リストのCSV

oku.edu.mie-u.ac.jp

よくわからなかったので自分なりにコメント追加

import sys
import re

category = 0

# 固定店舗用 正規表現セット
# [^ ]は半角スペース以外
regexp = r"([\d,]+) ([^ ]+) ([^ ]+) (.+) ([^ ]+) ([^ ]+) (\d+%)$"

# 範囲設定
rangelim = 8

for line in sys.stdin:

    # 行末空白文字削除
    line = line.rstrip()

    # カンマ付き数字があるか?
    m = re.search(r"([\d,]+) ", line)

    # マッチしなかった場合は次行へ
    if not m:
        continue

    # カンマ付き数字のカンマを除去、整数変換
    n = int(re.sub(",", "", m.group(1)))

    # Noが1の時は次のカテゴリー
    if n == 1:
        category += 1

        # EC・通信販売の場合
        if category == 2:
            # EC・通信販売 正規表現セット
            regexp = r"([\d,]+) (.+) (\d+%)$"

            # 範囲設定
            rangelim = 4

    # 現在のNoと直前のNo+1が違う場合は次行へ
    elif n != nprev + 1:
        continue

    # 現在のNoを登録
    nprev = n

    # 行末が%ではない場合は次行の文字と結合
    while not re.search(r"%$", line):
        line = line + " " + sys.stdin.readline().strip()

    # 正規表現適用
    m = re.search(regexp, line)

    # マッチした場合
    if m:
        # Noを表示
        print(n, end="")

        # 2番目以降のマッチを順次表示
        for i in range(2, rangelim):
            print("," + m.group(i).strip(), end="")

        # 改行
        print()

    # マッチしなかった場合
    else:
        print("###", line)  # error