raw文字列の利用

広告

raw 文字列ではバックスラッシュ( Windows 環境では円記号)をエスケープ用の文字ではなく単なる文字として扱います。ここでは raw 文字列の利用方法について解説します。

raw文字列の使い方

通常の文字列では特別な値を記述するためにバックスラッシュ(\) ( Windows 環境では円記号)が利用されます。その為、 \ を 1 つの文字として利用する場合には \ 自身をエスケープシーケンスを使って \\ のように記述する必要があります。

Python のエスケープシーケンスについては「エスケープシーケンスを使用する」を参照されてください。

raw 文字列を使用すると \ を 1 つの文字として扱います。その為、 \\ のように記述する必要がなくなります。 raw 文字列を利用するには、文字列の前に r または R を記述してください。

r"文字列"
R"文字列"

raw 文字列の中では \ は特別な意味を持ちません。その為。 \n と書かれていてもエスケープシーケンスの改行という意味ではなく "\" と "n" の2つの文字という意味しか持ちません。raw 文字列は文字としての \ を多く使用する文字列などで使用すると都度エスケープする必要がないので便利です。

サンプルコード

次のサンプルを見てください。

print("インストール先は c:\\code\\python\\bin です")

>> インストール先は c:\code\python\bin です

print(r"インストール先は c:\code\python\bin です")

>> インストール先は c:\code\python\bin です

同じ文字列を通常の文字列と raw 文字列でそれぞれ記述してみました。 raw 文字列の方は、バックスラッシュをエスケープせずにそのまま記述できます。

raw文字列を使用する場合の注意点

raw 文字列であっても、文字列をダブルクオーテーションで囲って記述するときに、文字列の中でダブルクオーテーションを文字として記述する場合には \" とする必要があります。シングルクオーテーションで囲って文字列を記述するときに、文字列の中でシングルクオーテーションを文字として記述する同様に \' とします。

注意点として文字列を出力するとダブルクオーテーションやシングルクオーテーションの前に記述した \ がそのまま出力されてしまいます。

print(R"名前は\"ABC\"です")

>> 名前は\"ABC\"です

エスケープ用の \ を表示したくない場合には、ダブルクオーテーションが含まれる文字列はシングルクオーテーションで囲うようにしてください。

print(R'名前は"ABC"です')

>> 名前は"ABC"です

文字列をシングルクオーテーションで囲って記述する場合であれば、文字列の中でダブルクオーテーションはそのまま記述することができます。

もう 1 つの注意点として raw 文字列では \" や \' が特別な意味を持つため、 raw 文字列の一番最後に \ 記号を記述するとエラーとなります。

print(R"年齢は30歳です\")

>>   File "", line 1
>>     print(R"年齢は30歳です\")
>>                        ^
>> SyntaxError: EOL while scanning string literal

文字列の最後の \" の部分が " のエスケープとして処理されてしまうため、文字列が閉じていないと判定されてしまうためです。

もし raw 文字列で、文字列の最後に \ を記述したい場合には、 \ だけを通常の文字列として記述して連結するようにしてください。

print(R"年齢は30歳です" + "\\")

>> 年齢は30歳です\

raw 文字列の中で文字列の最後に \ を記述する方法について試しました。

-- --

raw 文字列の利用方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。