Pythonの「raw文字列(ロー文字列)」とは?
プログラミング初心者向けにやさしくかみ砕いた説明+練習問題と解答・解説付きでまとめます。
1. そもそも「エスケープシーケンス」って何?
Pythonでは、
文字列の中で「バックスラッシュ \」を使うと、特別な意味を持つことがあります。
たとえば:
print("こんにちは\nPython!")
Python出力結果:
こんにちは
Python!
ここで \n は「改行」を表しています。
このように \ から始まる特別な記号を「エスケープシーケンス」といいます。
2. でも「\」をそのまま文字として使いたいときもある!
例えば、Windows のフォルダのパスを表示したいとき:
print("C:\new\test")
Python結果はこうなります:
C:
ew est
なぜ?🤔"\n" は「改行」、"\t" は「タブ」として解釈されてしまうからです。
3. そんなときに「raw文字列」!
文字列の前に r をつけて書きます。
print(r"C:\new\test")
Python出力結果:
C:\new\test
やった!r をつけるだけで、\n や \t が特別扱いされず、
そのままの文字として出力されます。
4. 注意点
❌ その1:最後に「\」を書くとエラー!
print(r"C:\new\")
Pythonこれは文法エラーになります。
Pythonが「文字列が終わったのか」「まだ続くのか」わからなくなるためです。
✅ 解決法:
print(r"C:\new" + "\\")
Python出力:
C:\new\
その2:「”」や「’」は普通どおり注意!
" や ' は、文字列を囲む記号として扱われます。
なので、raw文字列でも中に同じ記号を使うときは注意が必要です。
# NG(エラー)
print(r"彼は"天才"です")
# OK(囲いを変える)
print(r'彼は"天才"です')
Python練習問題
基礎レベル
Q1.
次のコードの出力を予想してみましょう。
print("C:\\Users\\Python")
PythonA)
C:\Users\Python
解説:
通常の文字列なので、\ を出すには \\ と2回書く必要があります。\\ → \ として出力されます。
Q2.
では、次のコードの出力結果は?
print(r"C:\Users\Python")
PythonA)
C:\Users\Python
解説:r をつけたので、\ がそのまま出力されます。\\ と二重に書かなくてOK!
Q3.
次のコードの結果を予想してみてください。
print("Hello\nWorld")
print(r"Hello\nWorld")
PythonA)
Hello
World
Hello\nWorld
解説:
- 1行目は
\nが「改行」として働く。 - 2行目は raw文字列なので、
\nがそのまま表示される。
中級レベル
Q4.
次のコードでエラーになるのはなぜでしょう?
print(r"C:\path\")
PythonA)SyntaxError になる。
理由は、raw文字列の末尾にバックスラッシュ \ を置くと
「文字列が終わっていない」とPythonが勘違いするため。
解決法:
print(r"C:\path" + "\\")
PythonQ5.
次の2つの出力が同じ結果になるように修正してください。
print("C:\\Program Files\\Python\\")
print( ? )
PythonA)
print(r"C:\Program Files\Python" + "\\")
Python解説:
raw文字列の末尾に \ は書けないため、
最後の \ だけ普通の文字列 "\\” を連結して出力しています。
まとめ
| 比較項目 | 通常文字列 | raw文字列(r”…”) |
|---|---|---|
\n や \t | 特別な意味を持つ(改行・タブなど) | ただの文字として扱う |
| 書き方 | "文字列" | r"文字列" |
| バックスラッシュを多用する場面 | 面倒(\\と2回書く) | 便利(\のままでOK) |
末尾の \ | 書ける | 書けない(エラー) |
追加チャレンジ(応用)
次のコードの出力を見てみましょう👇
import re
pattern = r"\d+"
text = "年齢は30です"
print(re.findall(pattern, text))
Python結果:
['30']
🧩 解説:
raw文字列は「正規表現」で特に便利!\d+(数字1文字以上)など、\ を多用するパターンを書くときにr をつけることで読みやすく・ミスが減ります。
