HOWTO · Python

Python で文字列の最初の文字を大文字にする

文字列の最初の文字を大文字化するには、capitalize()、title()、capwords()、regex、string、ユーザー定義のメソッドを使用することができます。

このページの内容

この記事では、Python で文字列の最初の文字を大文字にする方法について解説します。また、文字ではなく桁が文字列の先頭にある場合のシナリオについても説明します。

Python で文字列の最初の文字を大文字にする capitalize() メソッドを使用する

文字列クラスの capitalize() メソッドは最初の文字を大文字にし、残りの文字は小文字にします。最初の文字がすでに大文字になっている場合は何もしません。

完全なサンプルコードを以下に示します。

string = "learn Python"
cap_string = string.capitalize()
print("The capitalized string is:", cap_string)

出力:

The capitalized string is: Learn python

文字列の最初の文字が数字の場合、最初の文字は大文字化されません。この問題を解決するには、関数 isdigit() を用いることができます。

以下に、isdigit() 関数を利用するための完全なサンプルコードを示します。

string = "5learn python"

for i, c in enumerate(string):
    if not c.isdigit():
        break

cap_string = string[:i] + string[i:].capitalize()

print("The capitalized string is:", cap_string)

出力:

The capitalized string is: 5Learn python

関数 enumerate() は文字列の反復可能なカウンタを提供し、その列挙されたオブジェクトを返します。isdigit() は文字が桁であるかどうかを調べる。最初の桁でない文字に出会ったときは for ループを抜ける。

string[:i] は先頭の桁の部分文字列であり、string[i:].capitalize() は残りの文字列の最初の文字を大文字に変換します。

Python で文字列の最初の文字を大文字にするには title() メソッドを使用する

title() メソッドは各単語のタイトルを文字列で区切ることを可能にします。これは各単語の最初の文字が大文字に変換され、残りの文字が小文字に変換されることを意味します。

完全なサンプルコードを以下に示します。

string = "learn python"
cap_string = string.title()
print("The capitalized string is:", cap_string)

出力:

The capitalized string is: Learn Python

この関数は、単語の先頭に桁があるかどうかにかかわらず、文字列内の各単語の最初の文字を大文字にします。

Python で関数 capwords() を使用しての文字列の最初の文字の大文字化

これは string モジュールの関数です。文字列を単語に分割し、各単語を大文字にした後に指定された区切り文字を使って再結合します。デフォルトの区切り文字は空白です。

完全なサンプルコードを以下に示します。

import string

strng = "learn python"
cap_strng = string.capwords(strng)
print("The capitalized string is:", cap_strng)

出力:

The capitalized string is: Learn Python

regex メソッドを用いて Python で文字列の最初の文字を大文字にする

このメソッドはまた、文字列内のすべての単語の最初の文字を大文字にし、残りの文字はすべて小文字にします。

完全なコード例を以下に示します。

import re

string = "learn python"

string = re.sub("([a-zA-Z])", lambda x: x.groups()[0].upper(), string, 1)

print("The capitalized string is:", string)

出力:

The capitalized string is: Learn python

Python の正規表現モジュールの sub() 関数は、文字列のパターン [a-zA-Z] (小文字または大文字のアルファベット) をラムダ関数の戻り値に置き換えます。

lambda x: x.groups()[0].upper() は、正規表現の最初に一致したグループ(この例では最初のアルファベット)を大文字に変換します。ここでは x がマッチしたオブジェクトです。

最初の文字を大文字にする必要があるため、re.sub() 関数の count に 1 を設定して、置換を一度だけ行うようにしています。

Python でユーザ定義メソッドを使用したの文字列の最初の文字の大文字化

文字列の最初の文字を大文字にするユーザ定義の関数を作ることもできます。アルファベットの先頭のインデックス i を見つけ、部分文字列 string[:i] に upper() メソッドを適用します。これにより、先頭の桁が存在する場合でも、文字列の最初のアルファベットが大文字になります。

完全なサンプルコードを以下に示します。

def check_alphabets(strng):
    i = 0
    for c in strng:
        if c.isalpha():
            i = i + 1
            return i
        i = i + 1


def unchanged_characters(strng):
    i = check_alphabets(strng)
    return strng[:i].upper() + strng[i:]


strng = "0learn1python"

cap_string = unchanged_characters(strng)

print("The capitalized string is:", cap_string)

出力:

The capitalized string is: 0Learn1python