1. ホーム
  2. パイソン

[解決済み】なぜPythonの生の文字列リテラルは単一のバックスラッシュで終わることができないのでしょうか?

2022-04-07 04:23:55

質問

技術的には、奇数個のバックスラッシュは ドキュメント .

>>> r'\'
  File "<stdin>", line 1
    r'\'
       ^
SyntaxError: EOL while scanning string literal
>>> r'\\'
'\\\\'
>>> r'\\\'
  File "<stdin>", line 1
    r'\\\'
         ^
SyntaxError: EOL while scanning string literal

パーサーは生の文字列のバックスラッシュを通常の文字として扱えばいいように思えるのですが(生の文字列とはそういうものではないのでしょうか)、おそらく私は明白な何かを見逃しているのだと思います。

どのように解決するのですか?

その理由は、太字で強調した部分に書かれています。

<ブロッククオート

文字列の引用符をエスケープするには バックスラッシュを使用します。 が、バックスラッシュは残ります。 を文字列で表示します。 r"\"" は の2つの文字列からなる有効な文字列リテラルです。 文字、すなわちバックスラッシュとダブル を引用しています。 r"\" は有効な文字列ではありません。 リテラル(生の文字列でも末尾につけることはできません は奇数個のバックスラッシュで構成される)。 具体的には、生の文字列は はバックスラッシュ1つであるため バックスラッシュは、次の 引用文字)。また シングルバックスラッシュと改行 は、この2文字 としてではなく、文字列の一部として扱われます。 を継続します。

つまり、生の文字列は100%生ではなく、まだ初歩的なバックスラッシュ処理が残っているのです。