言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Python辞典

  1. トップページ
  2. Python辞典
  3. 文字列.upper() / 文字列.lower() / 文字列.title()

文字列.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()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。