note.nkmk.me

Pythonで大文字・小文字を操作する文字列メソッド一覧

Date: 2017-02-15 / Modified: 2019-03-03 / tags: 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
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事