0

重複の可能性:
生の文字列を \ で終了できないのはなぜですか

この構文が正しい理由:

baseFilePath = r"C:\SVN\google code"

これはエラーを与えますが

baseFilePath = r"C:\SVN\google code\"

SyntaxError: 文字列リテラルのスキャン中に EOL

4

4 に答える 4

2

ドキュメントから

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

具体的には、生の文字列を単一のバックスラッシュで終了することはできません (バックスラッシュは次の引用文字をエスケープするため)

于 2013-01-06T09:13:39.637 に答える
1

2 番目のケースでは、引用符をエスケープしています。これ\"は、a のエスケープ シーケンスです。"

バックスラッシュを使用するには、二重のバックスラッシュを使用する必要があります\\

これはうまくいくはずです:

baseFilePath = "C:\\SVN\\google code\\"

>>> print(baseFilePath)
    C:\SVN\google code\
于 2013-01-06T09:09:57.837 に答える
1

を使用するos.path.joinと、これが回避され、OS に適したディレクトリ セパレータが使用されます。

>>> import os
>>> os.path.join('C:','svn','google code')
'C:/svn/google code'
于 2013-01-06T09:18:51.373 に答える
0

ここでは、バックスラッシュが末尾をエスケープしています"
文字列で使用する場合\、最も安全な方法はバックスラッシュ自体をエスケープすることです。

これを試して:

baseFilePath = "C:\\SVN\\google code\\"

生の文字列を使用する代わりに、それをお勧めします。エスケープが必要な文字はpython docに記載されています。

于 2013-01-06T09:11:16.000 に答える