ユーザーが入力したメールアドレスの表記ゆれを統一したり、記事のタイトルを見やすく整形したりするために、文字列の大文字・小文字を変換する処理は頻繁に行われます。
Pythonの文字列型(str)には、このような変換を行うための便利なメソッドがいくつか用意されています。
この記事では、基本となる upper(), lower() に加え、文頭や単語ごとの変換を行う capitalize(), title() について解説します。
1. すべて大文字・小文字にする: upper(), lower()
最も頻繁に使われるのが、文字列全体を統一するこれらのメソッドです。
upper(): すべての文字を大文字に変換します。lower(): すべての文字を小文字に変換します。
これらは、アルファベットの比較を行う際(例:"Yes" と "yes" を同じとみなす)の正規化によく使用されます。
具体的な使用例:コードの正規化
商品コードなどが大文字・小文字混在で入力された場合に、統一フォーマットに変換する例です。
# ユーザー入力(表記がバラバラ)
input_code = "Item-a001-XyZ"
# すべて大文字に変換
upper_code = input_code.upper()
# すべて小文字に変換
lower_code = input_code.lower()
print(f"元の文字列: {input_code}")
print(f"大文字変換: {upper_code}")
print(f"小文字変換: {lower_code}")
実行結果:
元の文字列: Item-a001-XyZ
大文字変換: ITEM-A001-XYZ
小文字変換: item-a001-xyz
なお、Python 3では全角アルファベット(例:ABC)も変換の対象となり、半角の変換メソッドで全角の大文字・小文字も切り替わります。
2. 先頭だけを大文字にする: capitalize()
capitalize() メソッドは、文字列の先頭の1文字だけを大文字にし、それ以外をすべて小文字に変換します。
文章の開始や、固有名詞の整形に適しています。
# 文頭が小文字、途中が大文字になっている文章
sentence = "python is FUN."
# 先頭のみ大文字、残りは小文字に
formatted = sentence.capitalize()
print(f"変換前: {sentence}")
print(f"変換後: {formatted}")
実行結果:
変換前: python is FUN.
変換後: Python is fun.
途中の FUN が fun に小文字化されている点に注目してください。
3. 単語ごとに先頭を大文字にする: title()
title() メソッドは、文字列に含まれるすべての単語の先頭を大文字にし、残りを小文字に変換します(タイトルケース)。
欧文のタイトルや、氏名の表記などに使われます。
# 書籍のタイトル(小文字のみ)
book_title = "the hitchhiker's guide to the galaxy"
# 各単語の先頭を大文字にする
title_cased = book_title.title()
print(f"変換前: {book_title}")
print(f"変換後: {title_cased}")
実行結果:
変換前: the hitchhiker's guide to the galaxy
変換後: The Hitchhiker'S Guide To The Galaxy
※ title() はアポストロフィの後ろなども「新しい単語の始まり」とみなして大文字にしてしまう特性があります(例:Hitchhiker'S)。より厳密なタイトルケースが必要な場合は、string モジュールの capwords() 関数を使用することが推奨されます。
4. 大文字と小文字を反転させる: swapcase()
swapcase() メソッドは、大文字を小文字に、小文字を大文字に反転させます。
text = "Hello Python"
swapped = text.swapcase()
print(swapped)
実行結果:
hELLO pYTHON
まとめ
upper(): 全体を大文字にする。lower(): 全体を小文字にする。capitalize(): 先頭1文字だけ大文字、残りは小文字にする。title(): 各単語の先頭を大文字にする。
用途に合わせて適切なメソッドを選択することで、テキストデータの整形を効率的に行うことができます。
