本記事では、Excel シート内の文字列を Python で一括変換し、全角/半角の表記ゆれ を統一する手順を解説いたします。openpyxl
, unicodedata
, jaconv
を活用し、次の四つの代表的な処理を順にご紹介いたします。
- Unicode 正規化(NFKC)
- 頭文字を大文字にそろえる Title Case 変換
- 半角→全角への統一
- 全角→半角への統一(かな・英字・数字)
目次
事前準備
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 を使い、半角↔全角 をニーズに合わせて一括変換
これらを組み合わせることで、名寄せやレポート作成時の整合性を高められます。ファイル名や列番号は業務シートに合わせて変更し、ご活用ください。