為什麼原始字串不能以單個反斜槓結尾?

2021-08-30 06:45:33 字數 1350 閱讀 6558

why can』t python』s raw string literals end with a single backslash?

python的原始字串有很多應用場景,比如用來表示windows的路徑和應用於正規表示式中。

但是在使用的時候卻發現,原始字串無法以單個反斜槓結尾,或者說,原始字串無法以奇數個反斜槓結尾

嘗試如下:

>>

> r'\'

file ""

, line 1

r'\'

^syntaxerror: eol while scanning string literal

>>

> r'\\\'

file ""

, line 1

r'\\\'

^syntaxerror: eol while scanning string literal

大多數人的誤解在於認為原始字串裡的反斜槓與其他字元沒有什麼不同

這是錯的

r或者r字首存在的時候,在反斜槓後面的字元保持不變,並且反斜槓本身會保留在字串中。

所以任何在反斜槓後面的字元都是原始字串的一部分

這樣一來:

那麼,重點來了:

所以原始字串無法以單個的(奇數個的)反斜槓結尾。

不在原始字串後面寫單個反斜槓,而是採用拼接的方式用普通字串加上反斜槓

>>

> test = r'測試'

'\\'

>>

>

print

(test)

測試\

在原始字串後面寫兩個反斜槓,然後採用切片操作切除最後乙個反斜槓。

>>

> test = r'測試\\'[:

-1]>>

>

print

(test)

測試\

不使用原始字串,直接使用普通字串。

>>

> test =

'測試\\'

>>

>

print

(test)

測試\

完成於201810290705

為什麼不能修改指向字串的指標

char m hello hello 儲存在靜態資料區,該資料不能修改.由指標m指向.不能通過指標m來修改靜態資料區的值.char w hello hello 儲存在棧空間陣列裡.陣列名為w,函式名為陣列的首位址.可以通過w i a 或 w i a 的形式來修改陣列內容.字串 hello 本身就是乙...

java 字串拼接為什麼不能用null

自己寫 的時候,第一次用string str null 然後去拼接字串,在查詢的時候報錯,debug檢查出來,最終的引數字串str裡面居然有null,如圖 所以拼接字串不能用null,原因如下 s s word 等價於 s string.valueof s word integer,double都一...

為什麼字串可以賦值給字元指標變數

2.指標可以自增,而陣列不能自增 指標是位址變數,而陣列是位址常量 3.void指標不能進行指標運算,也不能進行 取值操作 所指向的物件型別不確定 5.字元常量的型別可以理解為字元常量陣列的型別。例如 abcd 的型別可以看成 const char 5 6.陣列的型別是由該陣列所存放的元素的型別和陣...