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'>
マッチオブジェクトとして、マッチした文字列の開始位置・終了位置、マッチした文字列を取得できます。
正規表現の基本的な使用方法については、下記の記事で紹介しています。
スポンサーリンク
文字列を比較し、違う箇所を抽出(差分抽出)
文字列を比較し、差分を抽出する方法を紹介します。
「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のライブラリリファレンスから引用しました
引用:Pythonライブラリリファレンス
difflibモジュールを用いた、差分抽出方法については、下記の記事で紹介しています。
スポンサーリンク