Contents
ワードプレス 記事中の見出しの並び順変更
記事50個なら手作業は非効率 → 自動化がおすすめ
Excelで並び替えるか、スクリプトで一発処理
コードエディタ(VSCode)でもソート可能
H3の見出し。先頭に第1話~第49話までの表示順でばらつきはなし。
WordPressのクラシックエディタで編集している記事
・記事中に <h3>第◯話「タイトル」</h3> 本文… という形式で見出しが50個ある
・現在は「第49話 → 第48話 → … → 第23話」という逆順になっている
・これを 第1話 → 第2話 → … → 第49話 の順に並べ替えたい
・Pythonスクリプトで処理したい
プログラム
ワードプレス記事ソートプログラム
import re #文字列を「パターン(規則)」で検索・抽出・置換するための標準ライブラリ
# 記事を保存したファイル
INPUT_FILE = "article.html"
OUTPUT_FILE = "article_sorted.html"
# ファイルを読み込む
with open(INPUT_FILE, "r", encoding="utf-8") as f:
content = f.read()
# 見出し<h3>から次の<h3>までを「1話分」として抽出
pattern = re.compile(r'(<h3>第(\d+)話.*?</h3>.*?)(?=<h3>|$)', re.DOTALL)
episodes = pattern.findall(content)
# episodes は [(全体ブロック, "49"), (全体ブロック, "48"), ...] の形になる
# 数字でソート
episodes_sorted = sorted(episodes, key=lambda x: int(x[1]))
# 「episodes を、要素の2番目(x[1])を“数字として”見て昇順に並べ替える」
# このコードでは「何も指定していない」=それが昇順です。
# 並び替えたテキストを連結
sorted_content = "\n\n".join([ep[0] for ep in episodes_sorted])
# ファイルに保存
with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
f.write(sorted_content)
print("並べ替え完了! 出力ファイル:", OUTPUT_FILE)
ソートのプログラム
ご指定の1行をできるだけ簡潔に解説します。
episodes_sorted = sorted(episodes, key=lambda x: int(x[1]))
ひとことで言うと
👉 「episodes を、要素の2番目(x[1])を“数字として”見て昇順に並べ替える」
分解して理解すると
① sorted(episodes)
episodes(リスト)を並び替える
元のリストは変更しない
② key=
「何を基準に並べるか」を指定する
③ lambda x: int(x[1])
x … episodesの各要素
x[1] … 各要素の 2番目の値
int(x[1]) … 文字列を 数値に変換
👉 文字列ではなく“数字として”比較するため
具体例で一瞬で理解
episodes = [
(“第10話”, “10”),
(“第2話”, “2”),
(“第1話”, “1”),
]
このコードを実行すると👇
episodes_sorted = sorted(episodes, key=lambda x: int(x[1]))
結果:
[
(“第1話”, “1”),
(“第2話”, “2”),
(“第10話”, “10”),
]
なぜ int() が必要?
もし int() を付けないと…
“10” < “2” # True(文字列比較)
👉 文字列順になってしまい
「1 → 10 → 2」というおかしな順序になります。
超短縮まとめ
sorted() → 並べ替え
key= → 並べ替えの基準
lambda x: → 各要素を一時的に処理
int(x[1]) → 数字として正しく比較
この1行は
✅ Pythonでの「実用的ソート」の代表例
なので、理解できていればかなり良いレベルです 👍
昇順と降順
昇順は「どこで指定しているのか?」
👉 実は、このコードでは「何も指定していない」=それが昇順です。
episodes_sorted = sorted(episodes, key=lambda x: int(x[1]))
sorted() の基本ルール
sorted() 関数は、デフォルト(何も指定しない) → 昇順
明示的に降順にしたい場合だけ指定するという仕様になっています。
公式的な形で書くと
sorted(iterable, key=None, reverse=False)
ここで重要なのが👇
引数 意味 今回
key 並び替えの基準 指定している
reverse 並び順 False(省略)=昇順
つまりあなたのコードは、実際にはこう書かれているのと同じです👇
episodes_sorted = sorted(
episodes,
key=lambda x: int(x[1]),
reverse=False
)
降順にしたい場合は?
ここで初めて 昇順/降順を指定 します。
episodes_sorted = sorted(
episodes,
key=lambda x: int(x[1]),
reverse=True
)
👉 これで 数字の大きい順(降順) になります。
まとめ(超重要)
昇順は 指定不要(デフォルト)
reverse=True を書いたときだけ降順
Pythonらしい「シンプル設計」の代表例
覚え方(実務向け)
「sorted は基本昇順。逆にしたい時だけ reverse=True」
この感覚が身につくと、Pythonのコードが一気に読みやすくなります

実行方法(Windows/Mac共通)
上記スクリプトを sort_episodes.py という名前で保存
記事本文をコピーして article.html というファイルに保存(同じフォルダ内)
ターミナル / コマンドプロンプトで次を実行
python sort_episodes.py
article_sorted.html
というファイルが生成され、見出し順が 第1話→第49話 に並び替えられる
フォルダ構成
C:\Users\DELL\tamu\
├─ sort_episodes.py ← さっきのPythonスクリプト
├─ article.html ← WordPressからコピーした本文



コメント