python反斜杠不轉(zhuǎn)義是怎么回事

這篇文章主要介紹python反斜杠不轉(zhuǎn)義是怎么回事,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有仲巴免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

python本身使用 \ 來轉(zhuǎn)義一些特殊字符,比如在字符串中加入引號的時候

s = 'i\'m superman'
print(s)    # i'm superman

為了防止和字符串本身的引號沖突,使用 \ 來轉(zhuǎn)義,一般情況下這個也不會引起什么問題,但是當你要使用 \ 來轉(zhuǎn)義 \ 的時候,就比較混亂了,比如我們想要輸出一個 \ ,得寫兩個 \ ,否則會報語法錯誤,因為 \ 把后面的引號給轉(zhuǎn)義了,必須使用 \。

# 錯誤寫法
# print '\'

# 正確寫法
print('\\')     # \

# 原生字符串
print(r'\\')    # \\

將 \ 轉(zhuǎn)義一下使其不具備轉(zhuǎn)義功能,才可以正確輸出,當使用原生字符串的時候,輸出顯示了兩個 \ ,看起來好像是寫幾個輸出幾個的樣子,如果這樣想的話,你可以試一下,看能不能輸出奇數(shù)個 \。

python的原生字符串不能以反斜杠結(jié)尾的問題

Python的原生字符串(raw string)是個很有用的東西,可以少寫很多反斜線(轉(zhuǎn)義符號)。

不過它有個著名的bug,就是不能以反斜線結(jié)尾,這讓人很無語。首先要澄清的是不是不能以反斜線結(jié)尾,而是不能以奇數(shù)個反斜線結(jié)尾。

其次,這個bug的原因是一些處理器(例如主要的正則表達式引擎)希望進行它們自己的反斜線轉(zhuǎn)義處理,而這些處理器不允許字符串以未匹配的反斜線結(jié)尾。

最后,解決辦法就是把反斜線放在另一個字符串里,Python會自動進行合并:

dir = r"\this\is\my\dos\dir" "\\"

雖然原生字符串不是很完美,但是它已經(jīng)可以幫我們解決很大一部分的問題了。比如當你想匹配"\"的時候,原生字符串可以讓你至少少寫一半的\,即節(jié)省代碼量,又增加了可讀性。

import re
_string = '\\\\'
print(_string)  # \\

# 字符串
for i in re.findall('\\\\', _string):
    print(i)    
    # \
    # \
# 原生字符串
for i in re.findall(r'\\', _string):
    print(i)    
    # \
    # \

以上是python反斜杠不轉(zhuǎn)義是怎么回事的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章名稱:python反斜杠不轉(zhuǎn)義是怎么回事
文章位置:http://muchs.cn/article12/pphhdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、Google定制網(wǎng)站、微信小程序、網(wǎng)站導航、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)