raw文字列の利用

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

(Last modified: )

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 "<stdin>", 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

プログラミングや開発環境構築の解説サイトを運営しています。