文字列(str型)が提供しているメソッドのstr.upper()、str.lower()を使うと、英字をそれぞれ大文字、小文字に変換することが出来ます。また、他にも先頭文字のみ大文字(Title Case)に変換するなどのメソッドもあります。
本記事では、これらの使い方についてまとめます。
# 2019/5/2 記事更新
確認した環境
- OS: Ubuntu 16.04LTS
- Python: ver3.7.0
すべて大文字に変換
文字列を全て大文字にするには、uppder()メソッドを使います。
返り値は、大文字に変換された文字列のコピーとなります。(つまり、元の文字列は変更されない)
#大文字に変換されたコピーが返却される
>>> str = 'one two three four'
>>> str.upper()
'ONE TWO THREE FOUR'
#元の文字列は変更されません
>>> str
'one two three four'
すべて小文字に変換
文字列を全て小文字に変換するには、lower()メソッドを使います。
返り値はupper()メソッド同様に小文字に変換された文字列のコピーとなりますので、元の文字列は変更されません。
#小文字に変換されたコピーが返却される
>>> str = 'ONE TWO THREE FOUR'
>>> str.lower()
'one two three four'
#元の文字列は変更されません
>>> str
'ONE TWO THREE FOUR'
最初の文字だけを大文字に変換
最初の文字だけを大文字にするには、capitalize()メソッドを用います。
こちらも元の文字列は変更されません。
#最初の文字だけが大文字に変換されたコピーが返却される
>>> str = 'one two three four'
>>> str.capitalize()
'One two three four'
#元の文字列は変更されません
>>> str
'one two three four'
各単語の先頭の文字を大文字に変換
各単語の先頭の文字を大文字に変換するには、title()メソッドを用います。
単語の途中に大文字がある場合は、小文字に変換されます。
- ここでの「単語」とは、単純に連続したアルファベット[a-zA-Z]の文字列を指します。
- よって単語の途中にアポストロフィー’等の記号(他にも /、>、@など)がある場合は、そこで単語が区切れていると見なされます。
以下に例を示します。こちらも元の文字列は変更されません。
# 各単語の最初の文字だけが大文字に変換されたコピーが返却される
>>> str = 'one two three four'
>>> str.title()
'One Two Three Four'
# 元の文字列は変更されません
>>> str
'one two three four'
# 記号は単語の区切りと見なされます
>>> str2 = "one two Th'ree fo@ur"
>>> str2.title()
"One Two Th'Ree Fo@Ur"
# 単語の途中の大文字は小文字に変換されます
>>> str3 = 'one tWo thRee foUr'
>>> str3.title()
'One Two Three Four'
大文字と小文字を入れ替える
大文字と小文字を入れ替えるには、swapcase()メソッドを使います。こちらも上記同様、元の文字列は変更されません。(どのような用途で使うのかちょっと想像つきませんが・・・・)
#大文字と小文字を入れ替えた文字列のコピーが返却される
>>> str = 'One Two Three Four'
>>> str.swapcase()
'oNE tWO tHREE fOUR'
#元の文字列は変更されません
>>> str
'One Two Three Four'
まとめ
今回は、文字列を大文字・小文字に変換するやり方についてまとめました。文字列に大文字・小文字が混在していると思い通りの検索結果が得られない場合がありますので、そういった場合の対処に役立ちそうです。