Python PR

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

記事内に商品プロモーションを含む場合があります

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

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

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

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

s1 = 'abc'
s2 = 'ABC'

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

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

実行結果

等しい
等しい

casefold()メソッドを使う

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

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

s1 = 'abc'
s2 = 'ABC'

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

実行結果

等しい

Linkstr.casefold() - 組み込み型 — Python 3.10.0b2 ドキュメント

正規表現を使う

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

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 で正規表現を使う方法を解説します。文字のパターンによってそれが何を表しているかわかる場合があります。そんな文字列は正規表現を使うことで簡単に取得することができます。それでは、正規表現の使い方を見ていきましょう!...