重複の可能性:
生の文字列を \ で終了できないのはなぜですか
与えられr'\\'
た は と同等ですが'\\\\'
、なぜr'\'
と同等でないの'\\'
ですか?
私がpython3.2で得たのは
print(r'\')
File "<stdin>", line 1
print(r'\')
^
SyntaxError: EOL while scanning string literal
重複の可能性:
生の文字列を \ で終了できないのはなぜですか
与えられr'\\'
た は と同等ですが'\\\\'
、なぜr'\'
と同等でないの'\\'
ですか?
私がpython3.2で得たのは
print(r'\')
File "<stdin>", line 1
print(r'\')
^
SyntaxError: EOL while scanning string literal
バックスラッシュが偶数個のバックスラッシュの一部でない限り、生の文字列の最後の文字としてバックスラッシュを使用することはできません。閉じ引用符をエスケープします。
これを次と比較してください。
>>> r'\ '
'\\ '
'r'
またはプレフィックスが存在する場合'R'
、バックスラッシュに続く文字はそのまま文字列に含まれ、バックスラッシュはすべて文字列に残されます。たとえば、文字列リテラルr"\n"
は、バックスラッシュと小文字の 2 つの文字で構成されます'n'
。文字列の引用符はバックスラッシュでエスケープできますが、バックスラッシュは文字列に残ります。たとえば、r"\""
バックスラッシュと二重引用符の 2 文字で構成される有効な文字列リテラルです。r"\"
は有効な文字列リテラルではありません (生の文字列であっても、奇数のバックスラッシュで終わることはできません)。具体的には、生の文字列を単一のバックスラッシュで終了することはできません (バックスラッシュは次の引用文字をエスケープするため)。