CSVからページを作る:表の1行を1ページにする手順

この
- 先に
列を 決める。 URLに 使う列、 必須の 列、 出典と 時点の 列は 必ず持つ - 文字コードを
確かめて 開く。 BOM付きの UTF-8や Shift_JISの 違いで 止まる - 必須の
列が 空の 行と、 数字が 少ない 行は、 1ページにしない
目次
CSVから
道具の
作業は、どの順番で進める?
| 順番 | やること |
|---|---|
| 1 | 列を決める |
| 2 | 文字コードを |
| 3 | 必須の |
| 4 | テンプレートに |
| 5 | 数ページを |
いちばん時間を
列は、どう決める?
ページの
| 列の種類 | 例 | 決まり |
|---|---|---|
| URLに |
法人 |
変わらない値。 |
| 必須の列 | 会社名・ |
空なら |
| 任意の列 | 従業員数・設立年 | 空なら |
| 出典と |
出典URL・確認日 | 行ごとに持つ |
URLには、
出典と
文字コードは、UTF-8とShift_JISのどちら?
ページをnewline=''を
Shift_JISは、cp932で読む
Pythonには、shift_jisとcp932のshift_jisでは、cp932では
全角のcp932でshift_jisでcp932で
BOMで、1列目が読めなくなる
UTF-8のutf-8でrowで
utf-8-sigをutf-8-sigに
テンプレートに、どう流し込む?
架空の
id,name,city,employees,source_url,checked
0001,サンプル工業,○○市,120,https://example.com/a,2026-10-01
0002,テスト精機,○○町,,https://example.com/b,2026-10-01
import csv
import html
from pathlib import Path
TEMPLATE = """<h1>{name}</h1>
<p>所在地:{city}</p>
<p>従業員数:{employees}</p>
<p>出典:<a href="{source_url}">{source_url}</a>({checked}時点)</p>
"""
with open("companies.csv", newline="", encoding="utf-8-sig") as f:
for row in csv.DictReader(f):
if not row["name"] or not row["source_url"]:
continue # 必須の列が空の行はページにしない
row["employees"] = row["employees"] or "未確認"
page = TEMPLATE.format(**{k: html.escape(v) for k, v in row.items()})
out = Path("dist/company") / row["id"] / "index.html"
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(page, encoding="utf-8")
手元でdist/company/0001/index.htmlとdist/company/0002/index.htmlの
値をhtml.escapeを
空欄は、どう扱う?
この
ページにしない行は、どう決める?
必須の
私たちの
判定は、
流し込んだ後に、何を確かめる?
全部の
- 表の
最初の 行と 最後の行 - 空欄の
多い 行、 文字数の いちばん長い行 - 名前に&や
括弧、 全角の 英数字を 含む行 - ページにしないはずの
行が、 出ていないか
ページの
仕様・出典の
よくある質問
CSVのどの列をURLに使えばいいですか?
変わらない
CSVはUTF-8とShift_JISのどちらで保存すればいいですか?
ページを
Excelで作ったCSVを読むと、1列目の名前がおかしくなるのはなぜですか?
ファイルの
空欄のある行は、ページにしていいですか?
必須の
あわせて読みたい
静的サイトジェネレーター
データの
薄い
URL設計は、



