少しでも分かりやすく伝えたいr文字列

少しでも分かりやすく伝えたいr文字列

皆さんこんにちは!!
今回はPythonで用いるr文字列について説明していきます!!

r文字列とは

r文字列の「r」はrawを表していて「生」といった意味を持ちます。
生肉を示す「raw meat」のrawと一緒ですね。

その意味の通りraw文字列はそのままの文字列を表す時に用います。

実際に使ってみる

使い方は文字列の前に「r」もしくは「R」を付けることでr文字列を使うことができます。

r”文字列”

では実際にr文字列を用いて通常の文字列との比較を行っていきます。

normal_str = "ABC\nDE"
raw_str = r"ABC\nDE"

これをそれぞれ以下のprint関数を用いて出力してみます。

print("normal_str:", normal_str)
print("raw_str:", raw_str)

それぞれ出力すると、

normal_str: ABC
DE
raw_str: ABC\nDE

となります。
変数「normal_str」の方は「\n」で改行されたのに対し、変数「raw_str」の方は「\n」でも改行されずにそのままの文字列として出力されました。

このように、r文字列はエスケープシーケンスを無視することが出来る文字列になります。「\n」以外にも「\\」や「\’」といったエスケープシーケンスも同様に無視することができます。

ちょっとした注意点

として、「/(^o^)\」と出力したい場合、エスケープシーケンスを無視できるといっても、以下の様に記述するとエラーが出ます。

print(r"/(^o^)\")

実はこの状態だと「/(^o^)\」とは出力されません。

print関数エラー画面

エスケープシーケンスを無視できるとは言ってもエディターでは「\’」をエスケープシーケンスとして扱ってしまっているため、最後の「’」が文字列を括るのではなく「’」という文字列として表されてしまっています。
そのためこのまま実行すると、

SyntaxError: unterminated string literal

「文法が正しくない」とエラーが出力されてしまいます。

そのため、今回の様な場合には無理にr文字列を用いず、

print("/(^o^)\\")

とエスケープシーケンスを用いた方がいいかもしれませんね。

まとめ

r文字列はエスケープシーケンスを無視して、そのままの文字列を表す時に用います。
他にもPythonにはf文字列やu文字列といった別の表現方法もあるのでぜひ調べてみてください!