Pythonで大文字と小文字を変換する方法を解説

Python

本記事では、Pythonで大文字と小文字を変換する方法を解説します。Pythonでは文字列の大文字と小文字を変換するために、いくつかの便利なメソッドが用意されています。これらのメソッドを使えば、プログラム内で簡単に文字列の形式を整えることができます。

upper() – 文字列をすべて大文字に変換

文字列内のすべての小文字を大文字に変換します。既に大文字の文字や数字、記号などはそのまま残ります。大文字統一の表示やデータの正規化に便利です。

構文

文字列.upper()

使用例

text = "hello world"
upper_text = text.upper()
print(upper_text)  # 出力: HELLO WORLD

注意点

元の文字列は変更されず、新しい文字列が返されます。また、アルファベット以外の文字(数字、記号、空白など)には影響しません。

original = "Hello 123!"
converted = original.upper()
print(original)    # 出力: Hello 123!
print(converted)   # 出力: HELLO 123!

# 元の文字列は変更されていないことを確認
print(original is converted)  # 出力: False

lower() – 文字列をすべて小文字に変換

文字列内のすべての大文字を小文字に変換します。既に小文字の文字や数字、記号などは変更されません。大文字小文字を区別せずに比較したいときに役立ちます。

構文

文字列.lower()

使用例

text = "HELLO WORLD"
lower_text = text.lower()
print(lower_text)  # 出力: hello world

注意点

大文字小文字を区別しない比較を行う場合は、両方の文字列にlower()を適用してから比較するとよいでしょう。Unicode文字の一部は、小文字変換に特別なルールが適用される場合があります。

# 大文字小文字を区別しない比較
user_input = "Python"
if user_input.lower() == "python":
    print("一致しました")  # 出力: 一致しました

# Unicodeの例
german_text = "ß"  # ドイツ語のエスツェット
print(german_text.upper())  # 出力: SS (一文字から二文字になる)
print(german_text.upper().lower())  # 出力: ss (元の「ß」に戻らない)

capitalize() – 最初の文字だけを大文字に変換

文字列の最初の文字を大文字に変換し、それ以外の文字をすべて小文字に変換します。文章の先頭を整える場合に使用します。

構文

文字列.capitalize()

使用例

text = "hello world"
capitalized_text = text.capitalize()
print(capitalized_text)  # 出力: Hello world

注意点

このメソッドは最初の文字だけを大文字にし、残りはすべて小文字に変換します。つまり、文字列中の他の大文字もすべて小文字に変換されるため注意が必要です。

mixed_case = "hELLO WoRlD"
print(mixed_case.capitalize())  # 出力: Hello world

# 文章の先頭が英字でない場合
with_number = "123 hello"
print(with_number.capitalize())  # 出力: 123 hello (変化なし)

# 複数の文章がある場合
two_sentences = "hello. world."
print(two_sentences.capitalize())  # 出力: Hello. world. (最初の文字のみ)

title() – 各単語の最初の文字を大文字に変換

文字列内の各単語の最初の文字を大文字に変換し、残りの文字を小文字に変換します。タイトルやヘッダーの整形に便利です。

構文

文字列.title()

使用例

text = "hello world"
title_text = text.title()
print(title_text)  # 出力: Hello World

# 複合語の例
text2 = "hello-world python_example"
title_text2 = text2.title()
print(title_text2)  # 出力: Hello-World Python_Example

注意点

title()メソッドは空白や特殊文字(ハイフン、アンダースコアなど)の後の文字を「単語の最初」と見なします。そのため、複合語や特殊な表記がある場合、予期しない結果になることがあります。また、”a”や”the”などの冠詞も大文字になるため、英語の正式なタイトルケースのルールとは異なります。

# 特殊文字の後も大文字になる
special_chars = "hello-world python_example"
print(special_chars.title())  # 出力: Hello-World Python_Example

# 英語の冠詞も大文字になる
english_title = "the lord of the rings"
print(english_title.title())  # 出力: The Lord Of The Rings

# 正確な英語のタイトルケースにするには追加の処理が必要
# 簡易例(実際はより複雑な処理が必要)
def proper_title(text):
    small_words = ["a", "an", "the", "in", "of", "on", "at", "for", "by", "to"]
    words = text.lower().split()
    result = []
    for i, word in enumerate(words):
        if i == 0 or i == len(words) - 1 or word not in small_words:
            result.append(word.capitalize())
        else:
            result.append(word)
    return " ".join(result)

print(proper_title(english_title))  # 出力: The Lord of the Rings

swapcase() – 大文字と小文字を入れ替える

文字列内の大文字を小文字に、小文字を大文字に入れ替えます。特殊な表示効果を作りたいときや、テキストの目立たせ方を逆転させたいときに便利です。

構文

文字列.swapcase()

使用例

text = "Hello World"
swapped_text = text.swapcase()
print(swapped_text)  # 出力: hELLO wORLD

注意点

このメソッドは大文字小文字を完全に入れ替えるため、元のテキストの大文字小文字の情報は失われます。swapcase()を2回適用しても、一部の特殊な文字では元に戻らない場合があります。

# 基本的な使用
mixed = "Hello World 123"
print(mixed.swapcase())  # 出力: hELLO wORLD 123

# 2回適用すると元に戻る(基本的なケース)
print(mixed.swapcase().swapcase())  # 出力: Hello World 123

# 特殊な文字では元に戻らないケース
special = "İstanbul"  # トルコ語の大文字のIにドット付き
print(special.swapcase())  # "istanbul" になる
print(special.swapcase().swapcase())  # 元の "İstanbul" にならない場合がある

casefold() – 強力な小文字変換

lower()よりも積極的に大文字を小文字に変換します。Unicode文字に対して特殊な変換ルールを適用し、より徹底的な大文字小文字の区別をなくす処理を行います。言語に依存しない比較に適しています。

構文

文字列.casefold()

使用例

text = "Groß"  # ドイツ語で「大きい」
print(text.lower())      # 出力: groß
print(text.casefold())   # 出力: gross

注意点

casefold()は特に多言語テキストを扱う場合にlower()よりも効果的ですが、一部の文字では元の見た目が大きく変わることがあります。

# 言語に依存しない比較
german1 = "GROSS"
german2 = "Groß"  # ドイツ語での別表記

# lower()では一致しない
print(german1.lower() == german2.lower())  # 出力: False

# casefold()では一致する
print(german1.casefold() == german2.casefold())  # 出力: True

# リゲチャー文字の例
ligature = "fi"  # 'fi'のリゲチャー
print(ligature.lower())    # 変化なし
print(ligature.casefold()) # 'fi'に分解される

まとめ

Pythonでは文字列の大文字小文字を変換するための便利なメソッドがいくつか用意されています。

  • upper(): すべての文字を大文字に変換
  • lower(): すべての文字を小文字に変換
  • capitalize(): 文字列の最初の文字だけを大文字に変換
  • title(): 各単語の最初の文字を大文字に変換
  • swapcase(): 大文字と小文字を入れ替える
  • casefold(): 言語に依存しない強力な小文字変換

これらのメソッドを活用することで、テキスト処理や表示を適切に整えることができます。文字列操作は多くのプログラムで必要となる基本的な処理なので、これらのメソッドをマスターしておくと便利です。

タイトルとURLをコピーしました