AI資格ドリル
資格を選ぶ↓

用語比較

capitalize()と title() の違い|they're が They'Re になる理由(Python3基礎)

文字列の大文字小文字を整えるメソッドには、upper()、capitalize()、title() があります。upper() は全部を大文字にしますが、capitalize() と title() は「先頭だけ」を大文字にする点が似ていて、混同しやすい組み合わせです。

capitalize() は文字列全体の先頭の 1 文字だけを大文字にし、残りは小文字にします。title() は単語ごとに先頭を大文字にします。ただし title() は、アポストロフィの後ろも新しい単語として扱います。

このページは、title() の結果が They'Re のようになって驚いた人や、3 つのメソッドの使い分けを整理したい人向けです。決まりは、Python 公式ドキュメントの組み込み型(文字列メソッドの項)に書かれています。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。

結論

upper()

すべての英字を大文字にする。

capitalize()

文字列の先頭の 1 文字を大文字にし、残りを小文字にする。

title()

単語ごとに先頭を大文字にし、残りを小文字にする。アポストロフィの後ろも単語の切れ目として扱う。

違いを表で確認

比較軸upper()capitalize()
"hello WORLD python" の結果capitalize():'Hello world python'title():'Hello World Python'
大文字にする場所文字列全体の先頭の 1 文字だけ単語ごとの先頭
"they're bill's friends" の結果capitalize():"They're bill's friends"title():"They'Re Bill'S Friends"
元の文字列変わらない(新しい文字列を返す)変わらない(新しい文字列を返す)

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

title() で They'Re のようになって困った人

title() は、連続する英字の並びを 1 つの単語とみなします。アポストロフィは英字ではないので、その後ろの英字が新しい単語の先頭になり、大文字にされます。Python 3.9.6 では "they're bill's friends".title() が "They'Re Bill'S Friends" になりました。

02

文の先頭だけを大文字にしたい人

capitalize() を使います。先頭の 1 文字を大文字にし、残りを小文字にするので、"hello WORLD python" は 'Hello world python' になります。2 文字目以降の大文字が小文字に変わる点に注意します。

03

元の変数が変わると思っている人

文字列は変更できない型で、どのメソッドも新しい文字列を返します。u = "hello" のとき、r = u.upper() を実行しても、u は "hello" のままで、r が "HELLO" になります。

具体例で使い分ける

例 1

3 つのメソッドの結果の比較

s = "hello WORLD python" に対して、upper()、capitalize()、title() をそれぞれ実行します。

  • upper() はすべての英字を大文字にするので、'HELLO WORLD PYTHON' です。
  • capitalize() は先頭の 1 文字を大文字にし、残りを小文字にします。WORLD も小文字になります。
  • title() は単語ごとに先頭を大文字にし、残りを小文字にします。

結論: upper() は 'HELLO WORLD PYTHON'、capitalize() は 'Hello world python'、title() は 'Hello World Python' です。Python 3.9.6 で同じ結果を確認しました。

例 2

数字を含む文字列の場合

"3rd place" に対して、title() と capitalize() を実行します。

  • title() は、連続する英字を単語とみなします。数字の 3 の後ろの r は新しい単語の先頭になるため、大文字にされます。
  • capitalize() は先頭の 1 文字だけが対象です。先頭の 3 は数字で大文字にできないので、何も変わりません。

結論: title() は '3Rd Place'、capitalize() は '3rd place' です。Python 3.9.6 で同じ結果を確認しました。

問題文から答えを選ぶ手順

  1. 1

    全部を大文字にしたいかを決める

    全部を大文字にするなら upper() です。

  2. 2

    文字列の先頭だけでよいかを決める

    先頭の 1 文字だけでよいなら capitalize() です。2 文字目以降は小文字になります。

  3. 3

    単語ごとに先頭を揃えたいかを決める

    単語ごとなら title() ですが、アポストロフィや数字を含む文字列は結果を確かめます。公式ドキュメントは、この問題が起きない string.capwords() の存在にも触れています。

試験での見分け方

  • 1capitalize() は、先頭の 1 文字を大文字にし、残りを小文字にする。
  • 2title() は、単語ごとに先頭を大文字にし、残りを小文字にする。
  • 3title() は、アポストロフィの後ろを新しい単語として扱う。
  • 4どのメソッドも元の文字列を変えず、新しい文字列を返す。

誤答しやすい選択肢

capitalize() が単語ごとに大文字にすると思う

修正: capitalize() が大文字にするのは、文字列全体の先頭の 1 文字だけです。単語ごとに揃えるのは title() です。

capitalize() は残りの文字をそのままにすると思う

修正: 残りは小文字になります。"PYTHON".capitalize() は 'Python' です。

title() は英語の単語を正しく区切ると思う

修正: title() は連続する英字を単語とみなすだけです。they're や 3rd のような文字列では、意図しない場所が大文字になります。

確認問題

Q1"hello WORLD python".capitalize() の結果は何ですか?

答え: 'Hello world python'

先頭の 1 文字だけが大文字になり、残りは小文字になります。

Q2"hello WORLD python".title() の結果は何ですか?

答え: 'Hello World Python'

単語ごとに先頭が大文字になり、残りは小文字になります。

Q3"3rd place".title() の結果は何ですか?

答え: '3Rd Place'

数字の後ろの英字が新しい単語の先頭とみなされ、r が大文字になります。

到達チェック

  • capitalize() が先頭の 1 文字だけを大文字にすると言える
  • title() が単語ごとに先頭を大文字にすると言える
  • title() がアポストロフィの後ろも大文字にすると言える
  • 文字列のメソッドが新しい文字列を返すと言える

同じ資格で次に知りたいこと

よくある質問

Q全部を小文字にするメソッドはありますか?

A

lower() があります。公式ドキュメントの文字列メソッドの項に、upper() と並んで載っています。

Q大文字と小文字を入れ替えるメソッドはありますか?

A

swapcase() があります。"Hello World".swapcase() は 'hELLO wORLD' になると公式ドキュメントに書かれています。

Qtitle() の問題を避けるにはどうしますか?

A

公式ドキュメントは、string.capwords() にはこの問題が無いと説明しています。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)