導入
Pythonでは、文字列リテラルの前にr
またはR
を付けることで、生の文字列を作成することができます。Pythonの生の文字列は、バックスラッシュ文字(\)をリテラル文字として扱います。生の文字列は、正規表現やWindowsディレクトリパスなど、バックスラッシュを含む文字列をエスケープ文字として扱いたくない場合に便利です。この記事では、Pythonの生の文字列の基本的な動作について説明し、文字列に特殊文字を含めるためのいくつかの一般的な例を提供します。
この記事の例では、異なる生の文字列のシナリオをデモンストレーションするために、Pythonインタラクティブコンソールをコマンドラインで使用します。
生の文字列を使用して文字列に改行文字を含める方法
この例では、値がHi\nHello
の文字列を使用します。この値を通常の文字列に代入しようとすると、改行文字(\n
)により新しい行が作成されます:
- s = 'Hi\nHello'
文字列を出力します:
- print(s)
出力は次のようになります:
Hi
Hello
出力は、改行文字により新しい行が作成されることを示しています。
文字列に改行文字を含めるためには、文字列変数の前にr
またはR
を付けて生の文字列を作成します。
- raw_s = r'Hi\nHello'
文字列を表示します:
- print(raw_s)
出力は:
Hi\nHello
出力には改行文字が含まれます。
生の文字列を使用して文字列に二重バックスラッシュ文字を含める
通常の文字列にホスト名のパスなどの二重バックスラッシュ文字を含めようとすると、コンパイラはバックスラッシュをエスケープ指示子とみなすため、最初のバックスラッシュ文字は表示されません。
例えば、パスを含む文字列を作成します:
- s = '\\examplehost\digitalocean\content\'
文字列を表示します:
- print(s)
出力は:
\examplehost\digitalocean\content\
出力には最初のバックスラッシュ文字が含まれていません。
文字列に両方のバックスラッシュ文字を含めるためには、文字列変数の前にr
またはR
を付けて生の文字列を作成します:
- s = r'\\examplehost\digitalocean\content\'
文字列を表示します:
- print(s)
出力は:
\\examplehost\digitalocean\content\
出力には両方のバックスラッシュ文字が含まれています。
クォートとバックスラッシュ文字のトラブルシューティング
生の文字列では、クォートは依然として単一のバックスラッシュ文字でエスケープできますが、バックスラッシュ文字は結果の生の文字列に残ります。
さらに、奇数個のバックスラッシュ文字で生の文字列を終了することはできません。この機能のため、単一のバックスラッシュ文字を含む生の文字列は作成できないため、r"/"
は無効な文字列です。
無効な生の文字列の例
この例では、終わりのクォートが出力から欠落しています。バックスラッシュ文字によってエスケープされているため、unterminated string literal
エラーが発生します:
r'\'
この例では、最初の2つのバックスラッシュは互いをエスケープし、3つ目のバックスラッシュは終わりのクォートをエスケープしようとしますが、unterminated string literal
エラーが発生します:
r'ab\\\'
有効な生の文字列の例
以下は、引用符やバックスラッシュ文字を含む有効な生の文字列の例です。
引用符をエスケープする生の文字列を作成します:
- s = r"\"\""
文字列を出力します:
- print(s)
出力は次のようになります:
\"\"
出力結果では、バックスラッシュ文字が引用符をエスケープしているため、文字列が終了しないようになりますが、バックスラッシュ文字は結果の文字列に残ります。
偶数のバックスラッシュ文字を含む生の文字列を作成します:
- s = R'ab\\'
文字列を出力します:
- print(s)
出力は次のようになります:
ab\\
出力結果では、偶数のバックスラッシュ文字が結果の文字列に含まれていることが示されています。
結論
この記事では、Pythonの生の文字列の基礎を学びました。続けて、Pythonの文字列について学習を進めてください。
Source:
https://www.digitalocean.com/community/tutorials/python-raw-string