しごと自動化レシピ

WORK RECIPE Python

Pythonで年をまたぐ週報のISO週番号を付ける

カレンダー年とISO週の年が異なる日を区別し、年末年始の週報を正しい週へまとめます。日曜始まりの社内週番号とは別の規則です。

日付の例 → 日付の結果(作業の流れを表す概念図)
掲載コード実行確認

Pythonで掲載コードを実行し、サンプルの出力結果を確認しました。

確認日:2026年10月19日(日本時間)

確認した内容と、確認していない範囲

確認した範囲

  • 掲載全文を隔離した一時フォルダで実行
  • 事前に記述した期待標準出力との完全一致

未確認・対象外

  • GUI操作・実業務データ・大量データ・外部サービス

数式・コードの処理結果を確認した記録です。記事の全画面操作を確認したものではありません。Excel等のバージョンや検証方法の詳細は実行確認の記録(JSON)で参照できます。

できあがるもの

2020-12-31 2020-W53 2021-01-01 2020-W53 2021-01-04 2021-W01。掲載の固定入力に対する標準出力です。

始める前に

  • Python 3.11以降のローカル環境。標準ライブラリのみを使い、追加パッケージやネット接続は不要です。
  • 架空の少量データを用いた作業です。本番のファイル・宛先・認証情報を入れず、入力と期待結果を見比べてから業務条件へ置き換えます。
入力例

2020-12-31、2021-01-01、2021-01-04。

入力例を表で確認する
入力例
日付
2020-12-31
2021-01-01
2021-01-04

掲載手順と同じ小さな入力例です。まずは、この値で試してください。

手順

  1. 新しい空の検証フォルダを作り、次のコードをUTF-8のrecipe.pyとして保存します。架空入力はコード内で固定しています。初回は値を変更せず、途中の型と並び順にも注目して読んでください。
  2. 掲載コード全文です。ネット送信・既存ファイルの編集は行わず、標準出力だけで結果を確認します。
    from datetime import date
    for s in ['2020-12-31','2021-01-01','2021-01-04']:
        y,w,_=date.fromisoformat(s).isocalendar()
        print(s,f'{y}-W{w:02d}')
  3. 検証フォルダのターミナルでpython --versionを確認してから、python -X utf8 recipe.pyを実行します。エラーが出たら入力を上書きして隠さず、エラー箇所と条件を確かめます。
  4. 標準出力を次の期待値と照合します。境界条件を変える場合は検証用の別コピーにし、計算の単位・同値の場合の優先順位・欠損の扱いを先に決めてから使います。 2020-12-31 2020-W53 2021-01-01 2020-W53 2021-01-04 2021-W01
    できあがる結果を表で確認する
    できあがる結果
    日付ISO週
    2020-12-312020-W53
    2021-01-012020-W53
    2021-01-042021-W01

    カレンダー年とISO週の年が異なる日を区別し、年末年始の週報を正しい週へまとめます。日曜始まりの社内週番号とは別の規則です。。図の表はこの記事の架空入力と処理結果を対応させています。

期待結果と照合する

2020-12-31 2020-W53 2021-01-01 2020-W53 2021-01-04 2021-W01。掲載の固定入力に対する標準出力です。

まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。

うまくいかないとき

  • ISO週は月曜始まりで第1週の定義があります。日付文字列の先頭4文字を週の年として使わないでください。
  • 例と違う値や欠損が来た場合の扱いは業務側で決めます。結果を原本へ自動で書き戻す構成にせず、確認用の出力として扱ってください。

止める・元に戻す

実行を終了して、今回新しく作った検証用プログラムまたは検証フローだけを片付けます。例は画面や実行履歴への出力のみで、既存データを変更せず外部へも送信しません。

公式資料・対応範囲

参照日:2026-10-19。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。

同じツールで試す

Pythonの記事一覧へ →