Python 文字列のエスケープとトリム

ここでは Python の文字列でエスケープとトリムをする方法についてご説明します。

Python 文字列で文字をエスケープする

Python の文字列を定義する時はシングルクォート(')かダブルクォート(")で囲みます。

シングルクォートで定義した文字の中でシングルクォートを使いたい時や、ダブルクォートで定義した文字列の中でダブルクォートを使いたい時には、それらの文字をエスケープする必要があります。

Python ではそのような文字をエスケープするのにバックスラッシュ \ を使います。

シングルクォートやダブルクォートの前にバックスラッシュをつけて \' や \" のようにエスケープします。

また、エスケープ文字として使われているバックスラッシュを文字列に入れたい時には \\ のようにします。

s1 = 'シングルクォート \' です。'
s2 = "ダブルクォート \" です。"
s3 = "バックスラッシュ \\ です。"

print(s1)
print(s2)
print(s3)

実行結果は次のようになります。エスケープ文字は消えて、出力された文字列に、それぞれシングルクォート・ダブルクォート・バックスラッシュが表示されていますね。

シングルクォート ' です。
ダブルクォート " です。
バックスラッシュ \ です。

Python 文字列に改行やタブを挿入する

Python の文字列にタブや改行を挿入したいことがあるかもしれません。

文字列の中にタブ文字の \t を入れるとその場所にタブが挿入されます。

文字列の中に改行文字の \n もしくは \r もしくは \r\n を入れると、その場所に改行が挿入されます。

改行コードシステムによって違います。Unix や Mac OS X 以降では \n、Windows では \r\n、Mac OS 9 以前は \r が使われています。


文字列に \t と \r\n を入れて print してみましょう。

print("aaa\tbbb\tccc")
print("-------------------")
print("xxx\r\nyyy\r\nzzz")

実行結果は次のようになります。タブと改行が挿入されていますね。

aaa     bbb     ccc
-------------------
xxx
yyy
zzz

Python 文字列をトリムする

プログラミングで、文字列の先頭や末尾に含まれる空白文字などを削除する関数名が trim であることが多く、その操作を「トリムする」と言います。

Python でトリムをする関数名は trim ではなく strip という名前がついています。

文字列を比較する時など、空白が入っていると別の文字だと判断されてしまいますので、特にユーザーの入力した文字列を扱う時などは、気をつけてトリムをしたほうが良いと思います。


Python では strip()、rstrip()、lstrip() の 3 つのメソッドを使って文字列をトリムすることができます。

rstrip() は文字列の右側の空白を、lstrip() は文字列の左側の空白を、trip() は左右の空白を削除した文字列を返します。

s = "      I'm from Japan.    "

print(f"[{s.rstrip()}]")
print(f"[{s.lstrip()}]")
print(f"[{s.strip()}]")

実行結果は次のようになります。空白がわかりやすいように前後に[]を表示していますが、それぞれ空白が削除されていますね。

[      I'm from Japan.]
[I'm from Japan.    ]
[I'm from Japan.]

ひとつ気をつけないといけないのは、strip のメソッドは空白を削除した文字列を返すだけで、その文字列の空白を削除してくれるわけではありません。

その文字列の空白を削除したい時には、その文字列に strip した結果を代入する必要があります。

s = "      I'm from Japan.    "

s.strip()
print(f"[{s}]") # 元のまま!

s = s.strip()   # s に代入する
print(f"[{s}]")

実行結果は次のようになり、strip()メソッドを実行しただけでは値が変わっておらず、代入することで空白を削除した文字列が保存されていますね。

[      I'm from Japan.    ]
[I'm from Japan.]

以上、Python の文字列でエスケープとトリムをする方法についてご説明しました。

© 2024 やさしい Python 入門