Categories: 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()メソッドは、大文字小文字関係なく比較を行うために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 で正規表現を使う方法を解説します。文字のパターンによってそれが何を表しているかわかる場合があります。そんな文字列は正規表現を使うことで簡単に取得することができます。それでは、正規表現の使い方を見ていきましょう!...
ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago