Python

【Python】大文字・小文字を区別せずに文字列を比較する方法

この記事では、Pythonで文字列を比較する際に大文字小文字を区別せずに比較する方法を解説します。日本語には大文字小文字はありません。

大文字小文字に変換して比較する

文字列をあらかじめ大文字、または小文字に変換することで、大文字小文字を区別することなく比較することができます。

大文字に変換するにはstr.upper()メソッド、小文字に変換するにはstr.lower()メソッドを使います。

s1 = 'abc'
s2 = 'ABC'

# 大文字に変換して比較
if s1.upper() == s2.upper():
    print('等しい')

# 小文字に変換して比較
if s1.lower() == s2.lower():
    print('等しい')

実行結果

等しい
等しい

casefold()メソッドを使う

casefold()メソッドは、大文字小文字関係なく比較を行うためにPython3.3で追加された文字列型のメソッドです。

このメソッドは、文字列を小文字に変換したコピーを返しますが、lower()メソッドでは変換できなかった多くの文字も小文字へと変換します。

s1 = 'abc'
s2 = 'ABC'

if s1.casefold() == s2.casefold():
    print('等しい')

実行結果

等しい

正規表現を使う

正規表現を使うことでも大文字小文字を区別せずに比較することが可能です。

re.fullmatch()を使い、フラグにre.IGNORECASEを指定することで大文字小文字を区別せずに完全一致の場合のみマッチさせることができます。

import re

s1 = 'abc'
s2 = 'ABC'

if re.fullmatch(s1, s2, re.IGNORECASE) != None:
    print('等しい')

実行結果

等しい

re.match()を使うと’abc’から始まる文字列に一致してしまうことに注意してください。

import re

s1 = 'abc'
s2 = 'ABCDEFG'

if re.match(s1, s2, re.IGNORECASE) != None:
    print('等しい')

実行結果

等しい
【Python】正規表現の使い方この記事では、Pythonで正規表現を使う方法を解説します。世界にはいろんな数字や文字で溢れいていますが、文字のパターンによってそれが何...
最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』