我對r
的實際操作有些困惑,並且無法理解與其相關的其他解釋。例如,是什麼s1
和s2
之間的區別:在Python中對字符串文字使用`r`
s1 = r'this\\has\no\special\characters'
編輯:
s2 = 'this\\has\no\special\characters'
感謝
我對r
的實際操作有些困惑,並且無法理解與其相關的其他解釋。例如,是什麼s1
和s2
之間的區別:在Python中對字符串文字使用`r`
s1 = r'this\\has\no\special\characters'
編輯:
s2 = 'this\\has\no\special\characters'
感謝
不同的是,s1
有間 「this」 和「有2個反斜槓「和s2
只有1個。另外,s2
在\n
處換行,而s1
沒有。如果您打印字符串,差異將變得非常清晰。
基本上,在字符串文字前面跟r
,你看到的是你所得到的。如果沒有前面r
,蟒蛇會翻譯各種轉義碼(\t
,\n
,\\
等)爲不同的字符(製表符,換行符\等)
有1個疑難雜症,我知道的。 .. r'\'
是SyntaxError
...
你可以看到,在r
使得原始字符串所以斜線和任何控制字符正確處理(在第一種情況第一種情況下,你現在有一個雙斜槓),與\n
現在成爲新行的字符串2進行比較:
In [218]:
s1 = r'this\\has\no\special\characters'
print(s1)
s2 = 'this\\has\no\special\characters'
print(s2)
this\\has\no\special\characters
this\has
o\special\characters
東西要小心使用原始字符串建設的路徑,如果路徑中包含一個尾隨回斜線,那麼這將不會被處理:
In [220]:
path = r'c:\mytemp\'
File "<ipython-input-220-ca80e74afea4>", line 1
path = r'c:\mytemp\'
^
SyntaxError: EOL while scanning string literal
第一個(s1
)是一個正則表達式集,其次就是一個字符串!並基於python doc
:
正則表達式使用反斜槓字符('\')
來指示特殊形式或允許使用特殊字符而不用調用其特殊含義。這與Python在字符串文字中用於相同目的的相同字符的使用相沖突;例如,以匹配反斜槓,人們可能不得不寫'\\\\'
作爲圖案串,因爲正則表達式必須是\\
,並且每個反斜槓必須表示爲\\
一個常規的Python字符串文字內。
解決方法是使用Python的原始字符串符號表示正則表達式模式;在以'r'
爲前綴的字符串文字中,不以任何特殊方式處理反斜槓。所以r「\ n」是一個包含'\'
和'n'
的兩個字符的字符串,而「\ n」是一個包含換行符的單字符字符串。通常,模式將使用此原始字符串表示法以Python代碼表示。 所以你必須:
>>> s1 = r'this\\has\no\special\characters'
>>> s1
'this\\\\has\\no\\special\\characters'
>>> s2 = 'this\\has\no\special\characters'
>>> s2
'this\\has\no\\special\\characters'
那些是100%相同,我認爲你需要刪除'r'在第一他們 – Kasramvd 2014-10-02 15:06:43
之一,您是不是要離開掀起了'\''中s2'? – mgilson 2014-10-02 15:06:50
如果你從一個「r」中刪除,你會看到不同之處。 – chepner 2014-10-02 15:07:48