2

r'this is a raw string'Python では、エスケープ文字を省略し、引用符の間にあるものを正確に出力するように記述された生の文字列であるという印象を受けました。私の問題は、試してみるprint r'\'SyntaxError: EOL while scanning string literal. print r'\n'ただし、正しく印刷さ\nれます。

4

2 に答える 2

4

ドキュメントの引用:

'r'またはプレフィックスが存在する場合'R'、バックスラッシュに続く文字はそのまま文字列に含まれ、バックスラッシュはすべて文字列に残されます。たとえば、文字列リテラルr"\n"は、バックスラッシュと小文字の 2 つの文字で構成されます'n'文字列の引用符はバックスラッシュでエスケープできますが、バックスラッシュは文字列に残ります。たとえば、r"\""バックスラッシュと二重引用符の 2 文字で構成される有効な文字列リテラルです。r"\"は有効な文字列リテラルではありません (生の文字列であっても、奇数のバックスラッシュで終わることはできません)。具体的には、生の文字列を単一のバックスラッシュで終了することはできません(バックスラッシュは次の引用文字をエスケープするため)。

強調鉱山を追加しました。

したがって、生の文字列はバックスラッシュに何らかの意味を付加しますが、引用符が関係する場合のみです。

于 2013-08-01T22:26:17.367 に答える
1

Python ドキュメントから:

文字列リテラルを「生の」文字列にすると、\n シーケンスは改行に変換されませんが、行末のバックスラッシュとソースの改行文字の両方がデータとして文字列に含まれます。

生の文字列について間違った考えを持っています。

于 2013-08-01T22:26:34.920 に答える