Pythonでセル内文字を正規化し、全角・半角のゆれを解消する方法

本記事では、Excel シート内の文字列を Python で一括変換し、全角/半角の表記ゆれ を統一する手順を解説いたします。openpyxl, unicodedata, jaconv を活用し、次の四つの代表的な処理を順にご紹介いたします。

  1. Unicode 正規化(NFKC)
  2. 頭文字を大文字にそろえる Title Case 変換
  3. 半角→全角への統一
  4. 全角→半角への統一(かな・英字・数字)
目次

事前準備

pip install openpyxl jaconv

1. Unicode 正規化で見た目をそろえる

import unicodedata
from openpyxl import load_workbook

# ワークブックの読み込み
workbook = load_workbook("task_list.xlsx")
sheet = workbook.active

# A列(1 列目)を対象に NFKC 正規化を実施
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row):
    cell_value = row[0].value
    if cell_value is not None:
        row[0].value = unicodedata.normalize("NFKC", str(cell_value))

workbook.save("task_list_unicode_fixed.xlsx")

NFKC 形式は「①→1」「P→P」など、見た目が同じ文字をまとめてくれるため、検索や重複チェックの前処理に最適です。

2. Title Case で頭文字を統一

from openpyxl import load_workbook

workbook = load_workbook("task_list.xlsx")
sheet = workbook.active

for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row):
    txt = row[0].value
    if txt is not None:
        row[0].value = str(txt).title()  # 例: “python script” → “Python Script”

workbook.save("task_list_titlecase.xlsx")

英語のタスク名や商品名を一覧表示する場面で、大文字・小文字のゆれを抑えたいときに便利です。

3. 半角→全角へ統一(数字も変換)

import jaconv
from openpyxl import load_workbook

workbook = load_workbook("task_list.xlsx")
sheet = workbook.active

for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row):
    txt = row[0].value
    if txt is not None:
        # 数字・英字を含むすべてを全角へ
        row[0].value = jaconv.h2z(str(txt), ascii=True, digit=True)

workbook.save("task_list_h2z.xlsx")

社内帳票で列幅をそろえたい場合や、帳票印字時に桁ずれを防ぎたい場合にご利用いただけます。

4. 全角→半角へ統一(かな・英字・数字)

import jaconv
from openpyxl import load_workbook

workbook = load_workbook("task_list.xlsx")
sheet = workbook.active

for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row):
    txt = row[0].value
    if txt is not None:
        # かな・英字・数字すべてを半角へ
        normalized = jaconv.z2h(str(txt), kana=True, ascii=True, digit=True)
        row[0].value = normalized.title()  # ついでに頭文字も統一

workbook.save("task_list_z2h.xlsx")

Web アプリ等にデータをインポートする際、半角での統一が求められるケースに有効です。

まとめ

  • Unicode 正規化 で基本の文字形をそろえ、検索漏れを防止
  • Title Case で英語見出しの大文字・小文字ゆれを解消
  • jaconv を使い、半角↔全角 をニーズに合わせて一括変換

これらを組み合わせることで、名寄せやレポート作成時の整合性を高められます。ファイル名や列番号は業務シートに合わせて変更し、ご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次