[英]Python raw literal string
str = r'c:\path\to\folder\' # my comment
當字符串中的最后一個字符是反斜杠時,似乎它將轉義最后一個單引號並將我的注釋視為字符串的一部分。 但是原始字符串應該忽略所有轉義字符,對嗎? 有什么事嗎 謝謝。
原始字符串文字不會將反斜杠視為啟動轉義序列, 除非緊跟在后的字符是界定文字的引號字符時,在這種情況下,反斜杠確實會將其轉義。
設計的動機是,原始字符串文字確實僅是為了方便輸入正則表達式模式而存在–就是說,此類文字不存在其他設計目標。 RE模式永遠不需要以反斜杠結尾,但是規則可能需要包括所有引號字符。
許多人確實嘗試使用原始字符串文字來使他們能夠以習慣的方式(帶有反斜杠)輸入Windows路徑-但是,您已經注意到,當您確實需要以反斜杠結尾的路徑時,這種用法會分解。 通常,最簡單的解決方案是使用正斜杠,Microsoft的C運行時和所有版本的Python在路徑中都完全等效:
s = 'c:/path/to/folder/'
(旁注: 不要用自己的標識符遮蓋諸如str
類的內置名稱-這是一種可怕的做法,沒有任何弊端,除非您習慣於避免有一天避免采取這種可怕的做法,否則您會發現自己很討厭-調試問題,當您的代碼的某些部分踐踏了內置名稱,而另一部分需要使用其真實含義時使用內置名稱)。
恕我直言,這是Python中的不一致之處,但在文檔中對此進行了描述。 轉到第二段:
http://docs.python.org/reference/lexical_analysis.html#string-literals
r“ \\”不是有效的字符串文字(即使原始字符串也不能以奇數個反斜杠結尾)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.