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 )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。