Pythonで大文字・小文字を操作する文字列メソッド一覧
Pythonの文字列型(str
型)には大文字・小文字を操作する便利なメソッドが標準で用意されている。大文字と小文字を変換したり判定したりできる。
ここでは以下の内容について説明する。
- 大文字と小文字の変換
- 基本的な使い方
- 全角と半角の扱い
str.upper()
: すべての文字を大文字に変換str.lower()
: すべての文字を小文字に変換str.capitalize()
: 先頭の一文字を大文字、他を小文字に変換str.title()
: 単語の先頭の一文字を大文字、他を小文字に変換str.swapcase()
: 大文字を小文字に、小文字を大文字に変換
- 大文字と小文字の判定
str.isupper()
: すべての文字が大文字かどうか判定str.islower()
: すべての文字が小文字かどうか判定str.istitle()
: タイトルケースかどうか判定
- 大文字と小文字を区別せずに文字列を比較
大文字か小文字かの判定ではなく数字か英字かを判定したい場合は以下の記事を参照。
大文字と小文字の変換
基本的な使い方
はじめに基本的な使い方を説明する。すべての文字を大文字にするupper()
メソッドを例とするがそのほかのメソッドでも同じ。
便宜上「変換」と書いているが、Pythonにおいて文字列型(str
型)オブジェクトは更新不能なオブジェクトなので、もともとの文字列(例の場合s_org
)自身は変更されない。
s_org = 'pYThon proGramminG laNguAge'
print(s_org.upper())
# PYTHON PROGRAMMING LANGUAGE
print(s_org)
# pYThon proGramminG laNguAge
変換された文字列を後で使う場合は、以下のように新たな変数に格納すればよい。
s_new = s_org.upper()
print(s_new)
# PYTHON PROGRAMMING LANGUAGE
元の変数を上書きすることも可能。
s_org = s_org.upper()
print(s_org)
# PYTHON PROGRAMMING LANGUAGE
全角と半角の扱い
アルファベットのような大文字と小文字の区別がある文字であれば半角でも全角でも変換される。
数字やひらがな・カタカナ・漢字のような大文字と小文字の区別がない文字は変化なし。例はupper()
だがそのほかのメソッドでも同様。
s_org = 'Pyhon Python パイソン 123'
print(s_org.upper())
# PYHON PYTHON パイソン 123
str.upper(): すべての文字を大文字に変換
s_org = 'pYThon proGramminG laNguAge'
print(s_org.upper())
# PYTHON PROGRAMMING LANGUAGE
str.lower(): すべての文字を小文字に変換
s_org = 'pYThon proGramminG laNguAge'
print(s_org.lower())
# python programming language
str.capitalize(): 先頭の一文字を大文字、他を小文字に変換
s_org = 'pYThon proGramminG laNguAge'
print(s_org.capitalize())
# Python programming language
str.title(): 単語の先頭の一文字を大文字、他を小文字に変換
いわゆるタイトルケースへの変換。
s_org = 'pYThon proGramminG laNguAge'
print(s_org.title())
# Python Programming Language
str.swapcase(): 大文字を小文字に、小文字を大文字に変換
大文字と小文字を入れ替える。
s_org = 'pYThon proGramminG laNguAge'
print(s_org.swapcase())
# PytHON PROgRAMMINg LAnGUaGE
大文字と小文字の判定
以降の例では'python'
などの文字列リテラルから直接メソッドを呼んでいるが、これまでの例のように変数に格納されている場合も同じ。
str.isupper(): すべての文字が大文字かどうか判定
isupper()
は、大文字と小文字の区別がある文字が少なくとも一文字以上含まれていて、そのすべてが大文字のときはTrue
、それ以外はFalse
を返す。
print('PYTHON'.isupper())
# True
print('Python'.isupper())
# False
大文字と小文字の区別がある文字であれば全角でも判定される。
print('PYTHON'.isupper())
# True
大文字小文字の区別がある文字が一文字でも含まれていれば区別がない文字は無視して判定されるが、大文字小文字の区別がある文字が一文字も含まれていない場合(すべての文字が区別のない文字の場合)はFalse
となる。
print('PYTHON パイソン 123'.isupper())
# True
print('パイソン 123'.isupper())
# False
str.islower(): すべての文字が小文字かどうか判定
islower()
は、大文字と小文字の区別がある文字が少なくとも一文字以上含まれていて、そのすべてが小文字のときはTrue
、それ以外はFalse
を返す。
print('python'.islower())
# True
print('Python'.islower())
# False
大文字と小文字の区別がある文字であれば全角でも判定される。
print('python'.islower())
# True
大文字小文字の区別がある文字が一文字でも含まれていれば区別がない文字は無視して判定されるが、大文字小文字の区別がある文字が一文字も含まれていない場合(すべての文字が区別のない文字の場合)はFalse
となる。
print('python パイソン 123'.islower())
# True
print('パイソン 123'.islower())
# False
str.istitle(): タイトルケースかどうか判定
istitle()
は、文字列がタイトルケース(単語の先頭の一文字が大文字、他は小文字)であればTrue
、そうでなければFalse
を返す。
print('Python Programming Language'.istitle())
# True
print('PYTHON Programming Language'.istitle())
# False
大文字と小文字の区別がない文字を含む場合、小文字の前に区別がない文字があるとFalse
となる。
print('★Python Programming Language'.istitle())
# True
print('Python★ Programming Language'.istitle())
# True
print('Py★thon Programming Language'.istitle())
# False
上の例のような文字列はあまりないが、序数などで数字を含む場合は現実的にありえるので注意。
print('The 1st Team'.istitle())
# False
print('The 1St Team'.istitle())
# True
大文字小文字の区別がある文字が一文字も含まれていない場合(すべての文字が区別のない文字の場合)はFalse
。
print('パイソン 123'.istitle())
# False
大文字と小文字を区別せずに文字列を比較
文字列を比較する場合、大文字と小文字が異なると等価とはみなされない。
s1 = 'python'
s2 = 'PYTHON'
print(s1 == s2)
# False
大文字と小文字を区別せずに比較したいときは、両者をupper()
やlower()
などで変換して比較すればよい。
print(s1.upper() == s2.upper())
# True
print(s1.lower() == s2.lower())
# True
print(s1.capitalize() == s2.capitalize())
# True
print(s1.title() == s2.title())
# True
文字列の比較についての詳細は以下の記事を参照。