關於Python反斜槓的那些事

2020-11-03 15:00:23

關於Python反斜槓的那些事

今天一位博友評論問到了關於反斜槓的問題,在此寫篇小短文總結一下,如有疏漏或錯誤,歡迎和感謝各位前輩和同學指出,更具體的關於跳脫字元的知識詳見於Python入門基礎語法1。好啦,打起精神,下面我們開始進入正題。

首薦原字元
原字元就是希望字串中的跳脫字元不起作用,他可以減輕我們的勞動量:可以少寫很多反斜線(跳脫符號)。在Python入門基礎語法1中寫道:使用原字元最後一個字元不能是反斜槓\, 但是程式碼中有個結尾是兩個\,其實它並不是不能用反斜線結尾,只是不能以奇數個反斜線(\)結尾;
使用原字元可以少寫很多反斜線見如下程式碼;

# 開發時間:2020/11/2 13:10
# 字串
a = ('E:\\inventor\\安裝包\\3rdParty')

# 原字元
b = (r'E:\inventor\安裝包\3rdParty')

print(a)
print(b)

執行結果如下:

E:\Python\python.exe E:/py/CSDN部落格/關於反斜線那些事.py
E:\inventor\安裝包\3rdParty
E:\inventor\安裝包\3rdParty

Process finished with exit code 0

—注意—

可能有人發下如果只輸入一個(\)的輸出可能結果是一樣的,但是我們要理解這個概念:(\)是跳脫字元 (\\)表示一個普通的\號…你可能會遇到輸入一個(\)也沒有報錯,也是自己想要的輸出結果,那其實是因為沒有遇到有意義的跳脫字母,具體見如下程式碼:

# 這兩個執行結果是一樣的是因為\w不是一個有效的跳脫字元
print('http:\www.baidu.com')  # 只有一個\,\是跳脫字元  \w不是一個有效的跳脫字元,所以作為普通字元輸出了
print('http:\\www.baidu.com')  # \\表示一個普通的\號

# 當跳脫字元\後面的是有意義的跳脫功能的時候就會出現問題
print('E:\3rdParty')  # E:rdParty輸出結果和想要的不一樣
print('E:\n.txt')  # 這種就是跳脫字元后面遇到了有意義的轉移功能  \n 就是換行的意思
print('E:\\3rdParty')

執行結果如下:

E:\Python\python.exe E:/py/CSDN部落格/關於反斜線那些事.py
http:\www.baidu.com
http:\www.baidu.com
E:rdParty
E:
.txt
E:\3rdParty

Process finished with exit code 0

這也就是為什麼比較推薦原字元了,不僅可以減少工作量,還可以避免忘記輸 (\\)而報錯了,詳見下述程式碼(可與上述對比):

print(r'http:\www.baidu.com')
print(r'E:\3rdParty')
print(r'E:\n.txt')

執行結果如下:

E:\Python\python.exe E:/py/CSDN部落格/關於反斜線那些事.py
http:\www.baidu.com
E:\3rdParty
E:\n.txt

Process finished with exit code 0

對於路徑的表達,\還是/
在Python中輸出路徑的時候,我們有三種方法: 【直接使用跳脫字元\\】、【使用原字元】 【使用/】具體程式碼如下:

print('E:\\inventor\\安裝包\\3rdParty')  # \\表示一個普通的\號,第一個\是跳脫字元
print(r'E:\inventor\安裝包\3rdParty')  # 原字元就是希望字串中的跳脫字元不起作用
print('E:/inventor/安裝包/3rdParty')  # 直接用正斜槓(/)表示路徑,沒有跳脫的誤解
# Windows中,正反斜槓二者皆可表示路徑,但是預設的是\做分隔符,如"C:\Windows\Python"。

執行結果如下:

E:\inventor\安裝包\3rdParty
E:\inventor\安裝包\3rdParty
E:/inventor/安裝包/3rdParty

Process finished with exit code 0

好啦,暫時想到和整理的就這麼多啦,可能不太完整,有些地方可能也有些紕漏,還望各位多多指教。 【十分感謝各位支援我的前輩和同學,一起學習和進步吧】ღ( ´・ᴗ・` )