文字列 文法・環境

【Python】文字列を比較する方法【比較演算子、正規表現など】

Pythonにおいて、文字列を比較する方法を紹介しています。

本記事では、以下の内容を紹介しています。

この記事で分かること

  • 文字列が一致するか比較する方法
  • 文字列が含まれるか比較する方法
  • 文字列の 先頭 / 末尾 が一致するか確認する方法
  • 文字のunicodeで比較(順番)
  • 文字列の大文字・小文字を区別せず比較
  • 正規表現を用いて文字列を比較
  • 文字列を比較し、違う箇所を抽出(差分抽出)

スポンサーリンク

文字列が一致するか比較【==、!=】

文字列が一致するかを比較する方法を紹介します。

比較演算子 == 、!= を使用することで、文字列が一致するかどうか比較できます。

比較演算子 == は、2つの文字列が一致する場合 Trueを、一致しない場合に False を返します。

比較演算子 != は、2つの文字列が一致しない場合 Trueを、一致する場合に False を返します。

また、アルファベットの大文字と小文字は、別の文字列として比較されます。

以下、2つの文字列を比較するサンプルコードです。

fruit1 = 'Apple'
fruit2 = 'Grape'
fruit3 = 'Apple'
fruit4 = 'apple'



print(fruit1 == fruit2)
# False

print(fruit1 == fruit3)
# True

print(fruit1 == fruit4)
# False



print(fruit1 != fruit2)
# True

print(fruit1 != fruit3)
# False

print(fruit1 != fruit4)
# True

文字列が含まれるか比較【in、not in】

文字列が含まれるかを比較する方法を紹介します。

比較演算子 in 、not in を使用することで、文字列が一致するかどうか比較できます。

比較演算子 in は、2つの文字列が一致する場合 Trueを、一致しない場合に False を返します。

比較演算子 != は、2つの文字列が一致しない場合 Trueを、一致する場合に False を返します。

以下、サンプルコードです。

fruits = 'Apple Banana Orange Grape Peach'

fruit1 = 'Lemon'
fruit2 = 'Orange'
fruit3 = 'orange'



print(fruit1 in fruits)
# False

print(fruit2 in fruits)
# True

print(fruit3 in fruits)
# False



print(fruit1 not in fruits)
# True

print(fruit2 not in fruits)
# False

print(fruit3 not in fruits)
# True

スポンサーリンク

文字列の 先頭 / 末尾 が一致するか確認

文字列の 先頭 / 末尾 が特定の文字列と一致するか確認する方法を紹介します。

文字列の先頭と一致するか確認する場合には、startstwith( )メソッドを使用します。

文字列の末尾と一致するか確認する場合には、endstwith( )メソッドを使用します。

以下、先頭の文字列を確認するサンプルコードです。

fruits = 'Apple Banana Orange Grape Peach'

print(fruits.startswith('Apple'))
# True

print(fruits.startswith('Banana'))
# False

引数には、タプルを指定することもできます。

タプルのいずれかの要素が一致すると、Trueとなります。

fruits = 'Apple Banana Orange Grape Peach'

print(fruits.startswith(('Apple', 'Banana')))
# True

print(fruits.startswith(('Banana', 'Orange')))
# False

以下、末尾の文字列を確認するサンプルコードです。

fruits = 'Apple Banana Orange Grape Peach'

print(fruits.endswith('Peach'))
# True

print(fruits.endswith('Banana'))
# False

引数にタプルを指定した例です。

fruits = 'Apple Banana Orange Grape Peach'

print(fruits.endswith(('Peach', 'Banana')))
# True

print(fruits.endswith(('Banana', 'Apple')))
# False

文字のunicodeで比較(順番)

文字をunicodeの順番で比較する例を紹介します。

文字はunicodeで定められた文字コードの順番で、大小判定されます。

数値とアルファベットについては、下記の大小関係があります。

  • 数字の文字:0 < 1 < ・・・ < 9 の順番
  • アルファベット : a < b < ・・・ < z の順番
  • 数字 < アルファベット大文字 < アルファベット小文字 の順番

組み込み関数ord( )を用いることで、文字コードを確認できます。

print(ord('0'))
# 48
print(ord('9'))
# 57
print(ord('A'))
# 65
print(ord('Z'))
# 90
print(ord('a'))
# 97
print(ord('z'))
# 122

文字を、文字コードの順番で比較するサンプルコードです。

print('0' < '9')
# True

print('9' < 'A')
# True

print('A' < 'Z')
# True

print('Z' < 'a')
# True

print('a' < 'z')
# True

スポンサーリンク

文字列の大文字・小文字を区別せず比較

アルファベットの大文字、小文字を区別せずに比較する方法について、紹介します。

文字列を比較する前に、比較対象の文字列を大文字または小文字に統一することで、大文字・小文字を区別に比較できます。

upper( )メソッドを用いることで、文字列をすべて大文字に変換できます。

lower( )メソッドを用いることで、文字列をすべて小文字に変換できます。

以下、サンプルコードです。

fruit1 = 'Apple'
fruit2 = 'apple'


print(fruit1.upper())
# APPLE

print(fruit1.lower())
# apple


print(fruit1 == fruit2)
# False

print(fruit1.upper() == fruit2.upper())
# True

print(fruit1.lower() == fruit2.lower())
# True

正規表現を用いて文字列を比較

正規表現を用いて、文字列を比較する方法を紹介します。

正規表現とは、文字列をパターンで表現する記述方法です

正規表現を用いることで、指定したパターンに当てはまる文字列を検索することができます。

Pythonの標準ライブラリである、"reモジュール"を用いることで、正規表現を扱うことができます。

search( )関数は、文字列がパターンにマッチするかを判定する関数です。

書き方

re.search( パターン, 検索対象の文字列 )

以下、サンプルコードです。

Bとaの間に任意の小文字アルファベットが含まれるパターンを探しています。

import re

fruits = r'Apple Banana Orange Grape Peach'
res = re.search(r'B[a-z]+a', fruits)

print(res)
# <re.Match object; span=(6, 12), match='Banana'>

マッチオブジェクトとして、マッチした文字列の開始位置・終了位置、マッチした文字列を取得できます。

正規表現の基本的な使用方法については、下記の記事で紹介しています。

正規表現の基本的な使用方法【reモジュール】

スポンサーリンク

文字列を比較し、違う箇所を抽出(差分抽出)

文字列を比較し、差分を抽出する方法を紹介します。

「difflib」は、シーケンスを比較するためのPython標準モジュールです。

シーケンスとは、順番に並んだ一続きのデータのことを指すため、順番を含めてファイルや文字列の中身を比較できます。

以下、difflibモジュールのcompare( )関数で、文字列の差分を抽出するサンプルコードです。

import difflib

fruits_1 = 'Apple Banana Orange Grape Peach'
fruits_2 = 'Apple Banana Orange Lemon Peach'

diff = difflib.Differ()
output_diff = diff.compare(fruits_1.split(), fruits_2.split())

print('\n'.join(output_diff))
'''
  Apple
  Banana
  Orange
- Grape
+ Lemon
  Peach
'''

> diff = difflib.Differ()

Differオブジェクトを生成しています。

> fruits_1.split( )

文字列をスペースで区切り、リストにしたうえで、引数として渡しています。

出力結果のコードの見方について、pythonのライブラリリファレンスから引用しました

difflibモジュールの記号の見方

引用:Pythonライブラリリファレンス

difflibモジュールを用いた、差分抽出方法については、下記の記事で紹介しています。

difflibモジュールの使用方法

スポンサーリンク

-文字列, 文法・環境
-,