str = r'c:\path\to\folder\' # my comment
- IDE: エクリプス
- Python2.6
文字列の最後の文字がバックスラッシュの場合、最後の一重引用符がエスケープされ、コメントが文字列の一部として扱われるようです。しかし、生の文字列はすべてのエスケープ文字を無視するはずですよね? 何が間違っている可能性がありますか?ありがとう。
生の文字列リテラルは、直後の文字がリテラルを区切る引用文字である場合を除き、バックスラッシュをエスケープ シーケンスの開始として扱いません。この場合、バックスラッシュはそれをエスケープします。
設計の動機は、生の文字列リテラルが実際には正規表現パターンを入力する便宜のためにのみ存在するということです。つまり、そのようなリテラルには他の設計目標は存在しません。また、RE パターンはバックスラッシュで終わる必要はありませんが、すべての種類の引用文字を含める必要がある場合があります。
多くの人が生の文字列リテラルを使用して、慣れ親しんだ方法で (バックスラッシュを使用して) Windows パスを入力できるようにしています。通常、最も簡単な解決策はスラッシュを使用することです。これは、Microsoft の C ランタイムとすべてのバージョンの Python が完全に同等のパスとしてサポートしています。
s = 'c:/path/to/folder/'
(補足:などの組み込みの名前を独自の識別子で隠してはなりませstr
ん。これは恐ろしい慣習であり、何のメリットもありません。その恐ろしい慣習を避ける習慣を身につけない限り、いつか厄介な名前が付いていることに気付くでしょう。コードの一部が組み込み名を踏みにじり、別の部分が組み込み名を実際の意味で使用する必要がある場合)。
これはPythonの不一致ですが、ドキュメントに記載されています。最後から 2 番目の段落に移動します。
http://docs.python.org/reference/lexical_analysis.html#string-literals
r"\" は有効な文字列リテラルではありません (生の文字列であっても、奇数のバックスラッシュで終わることはできません)