😺
【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