回答
當一個字符串必須包含與之相同的引號字符時,轉義該字符是唯一可用的解決方法 - 所以設計的替代方案是要麼使原始字符串文字無法包含其引導引號字符,要麼保留即使在字符串文字中,「反向間隙轉義」約定也適用於引用字符。由於原始字符串文字是爲便捷地表示正則表達式模式而設計的(不適用於DOS/Windows路徑!),而在RE模式中,後綴反斜槓從不必要,所以設計決策很容易(基於真實用於原始字符串的用例)。
一個很好的補充是這篇博客文章http://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/ – 2010-04-19 15:13:47
使用"c:/"
或"c:\\"
。原始字符串文字用於轉義轉義序列,不包括字面反斜槓,雖然它們以這種方式工作,但在這種情況下除外。
其中一個已知的案例我認爲,更好地使用「c:\\」的情況下。
但r「c:\\」被解釋爲'c:\\\\' – 2009-11-19 16:02:57
這可能是爲什麼Mark說「c:\\」而不是「r」c:\\「'。 – 2009-11-19 16:47:15
我必須承認,我誤讀 – 2009-11-21 13:34:27
即使原始字符串,\"
導致"
不被解釋爲字符串的結束(雖然反斜槓進入你的字符串),所以r"foo\"bar"
將是一個合法的字符串。編寫正則表達式時非常方便,但對於寫入路徑不是很好。
這不是什麼大問題,因爲大部分時間你應該使用os.path
和其他模塊來處理你的路徑。
在設計和歷史FAQ發現http://docs.python.org/faq/design.html#why-can-t-raw-strings-r-strings-end-with-a-backslash
原始字符串旨在緩解希望 做自己的反斜槓轉義 處理處理器(主要是 正則表達式引擎) 創建輸入。這樣的處理器認爲 無可匹敵的尾部反斜槓是 一個錯誤,所以原始字符串 不允許這樣做。作爲回報,他們允許您通過用 反斜槓轉義字符串報價 字符來傳遞 字符。當 r字符串用於其預期的 目的時,這些規則運作良好。
- 1. 逃生AWK特殊字符在Python
- 2. 如何逃生連字符在Python elasticsearch
- 3. 逃生()%[]從字符串PHP
- 4. Omnifaces逃生JSON字符串
- 5. GWT逃生特殊字符
- 6. 逃生的URL字符串
- 7. 刪除python中字符串的最後一個字符
- 8. Python的逃生POST
- 9. 刪除字符串中最後一個空格後的最後一個字符
- 10. 逃生繩和後
- 11. 逃生Java端字符串中的JavaScript
- 12. 滑行中的逃生鬍子字符
- 13. 逃生ActiveDirectory中具有特殊字符
- 14. python regexp從字符串中刪除最後一個數字
- 15. 爲什麼Python刪除字符串的最後一個字符?
- 16. Python Tkinter:刪除字符串的最後一個字符
- 17. PHP前刪除所有字符,除了最後一個號碼
- 18. Python:存儲最早發生的字符索引,而不是最後一個
- 19. 得到最後一個字符發生後的所有內容python
- 20. 劈裂字符串除了最後一個字
- 21. 如何從字符串中刪除逃生斜線在Android
- 22. 除了最後一個
- 23. Python中刪除字符串的最後3個字符
- 24. Python - 刪除文本文件中的最後一個字符
- 25. 如何刪除Python中字符串的最後一個單詞?
- 26. 逃生Regex.replace()替換字符串在VB.net
- 27. 逃生用字符串插值
- 28. 字符串逃生,從文本文件
- 29. 轉義逃生unicode字符[]到NSString
- 30. 逃生PHP開關變量字符串
對我來說似乎是一個錯誤。同樣的事情與r「」「C:\」「」 – pixelbeat 2009-11-19 15:55:59
不是一個錯誤。這當然是一個疣,但它是語言定義的一部分。 – jcdyer 2009-11-19 18:44:30