エスケープ文字をそのまま文字列として表現する - raw文字列の利用 - Python
Pythonでエスケープ文字をそのまま文字列として表現する場合の書式について紹介します。
概要
Pythonの文字列では、\n \t などのエスケープ シーケンスが設定されており、エスケープ シーケンスの文字列を記述することで、文字で表現できない改行コードなどの制御コードを記述できます。
便利な機能ですが、文字列で "\n" 文字自体を表現する場合には"\"記号をエスケープする必要があり "\\n" と記述する必要があります。
エスケープする文字数が少ない場合は問題はほとんどありませんが、正規表現式など"\"を記述する文字の個数が多い場合、エスケープすることで文字列がわかりにくくなってしまうこともあります。
PythonではRaw文字列を利用すると、エスケープシーケンスの文字を記述した通りに文字列の値として文字列を記述できます。
書式
Raw文字列を利用する場合は文字列の最初の手前に「r」を記述します。
または
記述例
expression = r"AB\t\tCDE";
プログラム例
コード
下記のコードを記述します。
text1="Penguin\r\nDuck\r\nWhiteBear\r\n\tEnd"
print(text1);
print("-----\r\n")
text2=r"Penguin\r\nDuck\r\nWhiteBear\r\n\tEnd"
print(text2);
解説
text1に代入している文字列が通常の文字列、text2に代入している文字列がRaw文字列です。
通常の文字列では \r \t は改行コードやタブ文字として表現されますが、Raw文字列では入力した文字のままとなります。
実行結果
上記のプログラムを実行します。下図の結果が表示されます。text1 の通常の文字列では、\r\nで改行されていることや、\tがタブの文字になっていることが確認できます。
一方でtext2の文字列のほうは記述した通りの文字列が画面に表示されており、エスケープシーケンスの処理がされていないことが確認できます。
補足
なお、通常の文字列で"\n"の文字列を表現する場合は 「\」記号をエスケープし "\\n" と記述すると "\n" 文字列が表現できます。
text1="Penguin\\r\\nDuck\\r\\nWhiteBear\\r\\n\\tEnd"
print(text1);
print("-----\r\n")
text2=r"Penguin\r\nDuck\r\nWhiteBear\r\n\tEnd"
print(text2);
上記のコードを実行すると、下図の実行結果画面に表示されます。通常の文字列で"\n"が文字列として画面に表示されていることが確認できます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用