😺

【Python】文字列とパス指定:rをつけると何が変わる?

に公開

概要

PythonでWindowsのパスを扱う際に、バックスラッシュ(¥ または \)の扱いで困ったことはありませんか?

この記事では、Pythonの文字列リテラルにおける 「raw文字列(r)」 の使い方と、その便利さをシンプルな例を通じて紹介します。


通常の文字列 vs raw文字列

Windows環境でのパスは C:\Path\To\Projects\playwright のようにバックスラッシュを使いますが、Pythonの文字列内では \エスケープシーケンスとしても使われるため、思わぬ動作になることがあります。

次のコードを見てみましょう。

# 使用していないパターン(¥¥を使用)
path_without_r = "C:\\Path\\To\\Projects\\playwright"

# 使用したパターン(rを使用して¥を1個で済ませる)
path_with_r = r"C:\Path\To\Projects\playwright"

# printで表示して違いを確認
print("使用していないパターン:", path_without_r)
print("使用したパターン:", path_with_r)

実行結果

使用していないパターン: C:\Path\To\Projects\playwright
使用したパターン: C:\Path\To\Projects\playwright

出力結果は同じに見えますが、書き方に大きな違いがあります。


解説:r をつけるとどうなるの?

  • path_without_r は、エスケープシーケンスを避けるために \\ を使っています。\P\T といったエスケープが無効なままだとエラーや警告につながる場合もあるため、注意が必要です。
  • 一方、r"C:\Path\To\Projects\playwright" のように r をつけると、バックスラッシュが特別扱いされず、そのまま文字として解釈されます。これが「raw(生の)文字列」です。

なぜ r を使うのが良いのか?

  • 可読性が上がる(バックスラッシュを2回書く必要がない)
  • エスケープミスによるバグを防げる
  • 正規表現などでも便利(\d+ のようなパターンを書くとき)

まとめ

Windowsのパス指定や正規表現を書くときは、Pythonの raw文字列(r"..." を使うのがおすすめです。コードがシンプルになり、意図しない挙動を避けることができます。

ぜひ、日常的に活用してみてください!

Discussion