この記事では、Pythonで文字列を比較する際に大文字小文字を区別せずに比較する方法を解説します。日本語には大文字小文字はありません。
文字列をあらかじめ大文字、または小文字に変換することで大文字小文字を区別することなく比較することができます。
大文字に変換するにはstr.upper()
メソッド、小文字に変換するにはstr.lower()
メソッドを使う。
s1 = 'abc'
s2 = 'ABC'
# 大文字に変換して比較
if s1.upper() == s2.upper():
print('等しい')
# 小文字に変換して比較
if s1.lower() == s2.lower():
print('等しい')
実行結果
等しい
等しい
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('等しい')
実行結果
等しい
View Comments