文字列.upper() / 文字列.lower() / 文字列.title()
| 対応: | Python 2(2000) |
|---|
文字列の大文字・小文字を変換するメソッドです。ユーザー入力の正規化や文字列比較の前処理に使われます。
構文
# 文字列をすべて大文字に変換する 文字列.upper() # 文字列をすべて小文字に変換する 文字列.lower() # 文字列の最初の文字だけ大文字、残りを小文字にする 文字列.capitalize() # 単語の先頭文字を大文字、残りを小文字にする(タイトルケース) 文字列.title() # 大文字を小文字に、小文字を大文字に入れ替える 文字列.swapcase()
関数一覧
| メソッド | 概要 |
|---|---|
| str.upper() | 文字列中のすべての英小文字を大文字に変換した新しい文字列を返します。 |
| str.lower() | 文字列中のすべての英大文字を小文字に変換した新しい文字列を返します。 |
| str.capitalize() | 文字列の最初の文字を大文字に、残りをすべて小文字に変換した新しい文字列を返します。 |
| str.title() | 各単語の先頭文字を大文字に、残りを小文字にした新しい文字列を返します。 |
| str.swapcase() | 大文字を小文字に、小文字を大文字に入れ替えた新しい文字列を返します。 |
サンプルコード
upper_lower_basic.py
text = "Hello, Python World!"
print(text.upper())
print(text.lower())
user_input = "Yes"
if user_input.lower() == "yes":
print("承認されました。")
command = "QUIT"
if command.upper() in ["QUIT", "EXIT", "Q"]:
print("終了します。")
実行すると次のように出力されます。
python3 upper_lower_basic.py HELLO, PYTHON WORLD! hello, python world! 承認されました。 終了します。
upper_lower_variants.py
s1 = "hello world"
print(s1.capitalize())
s2 = "HELLO WORLD"
print(s2.capitalize())
book_title = "the quick brown fox"
print(book_title.title())
name = "it's a wonderful life"
print(name.title())
text2 = "Hello World"
print(text2.swapcase())
print("HELLO".isupper())
print("hello".islower())
print("Hello World".istitle())
実行すると次のように出力されます。
python3 upper_lower_variants.py Hello world Hello world The Quick Brown Fox It'S A Wonderful Life hELLO wORLD True True True
upper_lower_normalize.py
headers = [" NAME ", "AGE", "city", "EMAIL ADDRESS"]
normalized = [h.strip().lower().replace(" ", "_") for h in headers]
print(normalized)
username = " Iori_YAGAMI "
normalized_name = username.strip().lower()
print(normalized_name)
fighters = ["YAGAMI_IORI", "KUSANAGI_KYO", "TERRY_BOGARD", "MAI_SHIRANUI", "CHRIS"]
lower_names = [f.lower() for f in fighters]
print(lower_names)
実行すると次のように出力されます。
python3 upper_lower_normalize.py ['name', 'age', 'city', 'email_address'] iori_yagami ['yagami_iori', 'kusanagi_kyo', 'terry_bogard', 'mai_shiranui', 'chris']
よくあるミス
よくあるミス1: capitalize() は先頭以外を小文字にする
capitalize() は先頭の1文字を大文字にするだけでなく、残りの文字をすべて小文字に変換します。すでに大文字が混在している文字列に使う場合は注意が必要です。
mistake1_ng.py
name = "yagami IORI" print(name.capitalize())
実行すると次のように出力されます。
python3 mistake1_ng.py Yagami iori
mistake1_ok.py
name = "yagami iori" words = name.split() result = " ".join(w.capitalize() for w in words) print(result)
実行すると次のように出力されます。
python3 mistake1_ok.py Yagami Iori
よくあるミス2: lower() と casefold() の違いを知らない
英語の大文字・小文字変換には lower() で十分ですが、ドイツ語の ß(エスツェット)などの特殊文字を含む場合は casefold() が より多くの文字を正規化します。国際化対応の文字列比較では両者の違いを意識する場面があります。
mistake2_ng.py
s = "Straße" print(s.lower()) print(s.lower() == "strasse")
実行すると次のように出力されます。
python3 mistake2_ng.py straße False
mistake2_ok.py
s = "Straße" print(s.casefold()) print(s.casefold() == "strasse")
実行すると次のように出力されます。
python3 mistake2_ok.py strasse True
概要
これらのメソッドはすべて新しい文字列を返します。元の文字列は変更されません(文字列はイミュータブルです)。大文字・小文字変換は英字のみに作用し、数字・記号・日本語などには影響しません。
文字列の大文字・小文字を無視した比較を行いたい場合は、両方を『lower()』で小文字にしてから比較するのが一般的です。より厳密な比較(ドイツ語の 'ß' など特殊文字を含む場合)には『casefold()』メソッドはUnicodeの大文字小文字を広範囲に正規化します。『casefold()』は『lower()』よりも積極的に小文字化するため、国際化対応の比較に適しています。
文字列の書式整形(数値のフォーマットや文字列の幅揃えなど)については『str.format() / f文字列』を参照してください。文字列が特定のパターンで始まるか確認するには『str.startswith() / str.endswith()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。