少しでも分かりやすく伝えたいr文字列
皆さんこんにちは!!
今回はPythonで用いるr文字列について説明していきます!!
r文字列とは
r文字列の「r」はrawを表していて「生」といった意味を持ちます。
生肉を示す「raw meat」のrawと一緒ですね。
その意味の通りraw文字列はそのままの文字列を表す時に用います。
実際に使ってみる
使い方は文字列の前に「r」もしくは「R」を付けることでr文字列を使うことができます。
では実際にr文字列を用いて通常の文字列との比較を行っていきます。
normal_str = "ABC\nDE"
raw_str = r"ABC\nDE"
これをそれぞれ以下のprint関数を用いて出力してみます。
print("normal_str:", normal_str)
print("raw_str:", raw_str)
それぞれ出力すると、
DE
raw_str: ABC\nDE
となります。
変数「normal_str」の方は「\n」で改行されたのに対し、変数「raw_str」の方は「\n」でも改行されずにそのままの文字列として出力されました。
このように、r文字列はエスケープシーケンスを無視することが出来る文字列になります。「\n」以外にも「\\」や「\’」といったエスケープシーケンスも同様に無視することができます。
ちょっとした注意点
として、「/(^o^)\」と出力したい場合、エスケープシーケンスを無視できるといっても、以下の様に記述するとエラーが出ます。
print(r"/(^o^)\")
実はこの状態だと「/(^o^)\」とは出力されません。
エスケープシーケンスを無視できるとは言ってもエディターでは「\’」をエスケープシーケンスとして扱ってしまっているため、最後の「’」が文字列を括るのではなく「’」という文字列として表されてしまっています。
そのためこのまま実行すると、
「文法が正しくない」とエラーが出力されてしまいます。
そのため、今回の様な場合には無理にr文字列を用いず、
print("/(^o^)\\")
とエスケープシーケンスを用いた方がいいかもしれませんね。
まとめ
r文字列はエスケープシーケンスを無視して、そのままの文字列を表す時に用います。
他にもPythonにはf文字列やu文字列といった別の表現方法もあるのでぜひ調べてみてください!