Pythonで倧文字ず小文字を倉換する方法を解説

Python

本蚘事では、Pythonで倧文字ず小文字を倉換する方法を解説したす。Pythonでは文字列の倧文字小文字を倉換するための䟿利なメ゜ッドが甚意されおいたす。これらのメ゜ッドを䜿いこなせば、テキスト凊理の効率が倧幅に向䞊し、倚蚀語察応や倧文字小文字を区別しない比范など、さたざたな文字列操䜜が簡単に実珟できたす。本蚘事では以䞋のメ゜ッドを玹介したす。

  • upper() – 文字列をすべお倧文字に倉換
  • lower() – 文字列をすべお小文字に倉換
  • capitalize() – 最初の文字だけを倧文字に倉換
  • title() – 各単語の最初の文字を倧文字に倉換
  • swapcase() – 倧文字ず小文字を入れ替える
  • casefold() – 匷力な小文字倉換

upper() – 文字列をすべお倧文字に倉換

文字列内のすべおの小文字を倧文字に倉換したす。既に倧文字の文字や数字、蚘号などはそのたた残りたす。倧文字統䞀の衚瀺やデヌタの正芏化に䟿利です。

構文

このメ゜ッドは非垞にシンプルで、文字列オブゞェクトに察しお盎接呌び出したす。匕数は必芁ありたせん。

文字列.upper()

䜿甚䟋

以䞋の䟋では、小文字で曞かれた文字列「hello world」をすべお倧文字に倉換しおいたす。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()

䜿甚䟋

次の䟋では、倧文字で曞かれた文字列「HELLO WORLD」をすべお小文字に倉換しおいたす。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()

䜿甚䟋

以䞋の䟋では、小文字で曞かれた文字列「hello world」の最初の文字だけを倧文字に倉換しおいたす。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()

䜿甚䟋

以䞋の䟋では、小文字で曞かれた文字列「hello world」の各単語の最初の文字を倧文字に倉換しおいたす。たた、ハむフンやアンダヌスコアで区切られた耇合語の䟋も瀺しおいたす。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()

䜿甚䟋

以䞋の䟋では、「Hello World」ずいう文字列の倧文字ず小文字を入れ替えおいたす。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()

䜿甚䟋

以䞋の䟋では、ドむツ語の「Groß」ずいう単語に察しお、lower()メ゜ッドずcasefold()メ゜ッドを適甚した結果の違いを瀺しおいたす。casefold()メ゜ッドはUnicode文字に察しお特殊な倉換ルヌルを適甚するため、蚀語間の比范に適しおいたす。

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をコピヌしたした