2016-09-05 13 views
2

私はpython 3.5.1を使用しています。私がこれを試していたときPython SyntaxError:文字列リテラルをスキャン中のEOL

print(r'\t\\\') 

エラーがありました:SyntaxError:EOLが文字列リテラルをスキャンしています。 は、しかし、この1は、誰もがこのことを説明していただけますうまく

print(r'\t\\') 

働いていましたか?

+0

しかし、文字Rで文字列を付けることによって、Pythonはこの文字列には何も逃れるべきではありませんので、なぜ「\」はまだ私の例では、文字をエスケープするのですか?さらに、 '\\\'を出力したい場合は、 '\'が次の文字をエスケープしないと仮定しているので、print(r '\\\')を書きますが、これはエラーメッセージを再度表示します。 –

答えて

4

最初にあなたのクローズ'をエスケープしているので、あなたの質問で言及したSyntaxErrorが発生しました。ストリングが決して終了しないためです。 2番目の場合は\という最後の文字をエスケープしているので、'はエスケープされません。 '\\'は、エスケープではなくリテラルのバックスラッシュです。その理由は、'が2番目のバージョンでエスケープされない理由と、最初のバージョンの末尾の'\'でない理由がであることです。

更新:

何とか生の弦について話していたのを忘れてしまった。それでも、the 3.5 docsから参照してください。

Even in a raw literal, quotes can be escaped with a backslash, but the backslash remains in the result; for example, r"\"" is a valid string literal consisting of two characters: a backslash and a double quote; r"\" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw literal cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the literal, not as a line continuation.

+0

しかし、文字列の先頭に文字「r」を付けると、この文字列の中で何かをエスケープするべきではありません。なぜ私の例では '\'はまだエスケープ文字ですか?さらに、 '\\\'を出力したい場合は、 '\'が次の文字をエスケープしないと仮定しているので、print(r '\\\')を書きますが、これはエラーメッセージを再度表示します。 –

+0

@ YitongZhong申し訳ありませんが、どういうわけか、生の( 'r '')文字列を使用していたのを見逃しました。説明については私の更新答えを見てください。 – elethan

関連する問題