コンテンツにスキップ

Pythonの生の文字列の使い方

[

Python Raw Strings(生の文字列)とは何ですか?

by Bartosz Zaczyński, 2024年1月24日

短く言えば:Python Raw Stringsはエスケープ文字列を無視します

rまたはRの小文字または大文字で始まる通常の文字列リテラルに出くわしたことがあるかもしれませんが、それがPythonの生の文字列です。

>>> r"This is a raw string"
'This is a raw string'

生の文字列は通常の文字列リテラルと外観および動作はほぼ同じですが、Pythonがいくつかの文字を解釈する方法には重要な違いがあります。このチュートリアルで探っていきます。

結果の文字列オブジェクトには特別なものはありません。プレフィックスを使用してリテラル値を宣言するかどうかに関係なく、常に通常のPython strオブジェクトになります。

他のプレフィックスとして利用可能なものには、Pythonの文字列リテラルで使用できることがある以下のものがあります。

  • b: バイトリテラル
  • f: フォーマット済み文字列リテラル
  • u: 旧Unicode文字列リテラル(PEP 414
>>> david = 'She said "I love you" to me.'
>>> alice = "Oh, that's wonderful to hear!"

このような選択肢があることで、テキストに選択したデリミタ文字('または")のいずれかが含まれている場合に構文エラーを回避することができます。例えば、文字列にアポストロフィを表す必要がある場合は、テキストを二重引用符で囲むか、両方のデリミタ型をテキスト内で混ぜるために複数行文字列を使用することができます。

>>> poem = """
... Beautiful is better than ugly.
... Explicit is better than implicit.
... Simple is better than complex.
... Complex is better than complicated.
... """

選択したデリミタ形式に関係なく、文字列リテラルには常にプレフィックスを付けることができます。ただし、プレフィックスの文字と開始引用符の間にはスペースがないようにしてください。

rという文字をプレフィックスとして使用すると、対応する文字列リテラルが生の文字列に変わります。では、Pythonの生の文字列とは一体何でしょうか?