python本身使用\來轉(zhuǎn)義一些特殊字符,比如在字符串中加入引號(hào)的時(shí)候
s='i\'msuperman'
print(s)#i'msuperman
為了防止和字符串本身的引號(hào)沖突,使用\來轉(zhuǎn)義,一般情況下這個(gè)也不會(huì)引起什么問題,但是當(dāng)你要使用\來轉(zhuǎn)義\的時(shí)候,就比較混亂了,比如我們想要輸出一個(gè)\,得寫兩個(gè)\,否則會(huì)報(bào)語法錯(cuò)誤,因?yàn)閈把后面的引號(hào)給轉(zhuǎn)義了,必須使用\。
#錯(cuò)誤寫法
#print'\'
#正確寫法
print('\\')#\
#原生字符串
print(r'\\')#\\
將\轉(zhuǎn)義一下使其不具備轉(zhuǎn)義功能,才可以正確輸出,當(dāng)使用原生字符串的時(shí)候,輸出顯示了兩個(gè)\,看起來好像是寫幾個(gè)輸出幾個(gè)的樣子,如果這樣想的話,你可以試一下,看能不能輸出奇數(shù)個(gè)\。
python的原生字符串不能以反斜杠結(jié)尾的問題
Python的原生字符串(rawstring)是個(gè)很有用的東西,可以少寫很多反斜線(轉(zhuǎn)義符號(hào))。
不過它有個(gè)著名的bug,就是不能以反斜線結(jié)尾,這讓人很無語。首先要澄清的是不是不能以反斜線結(jié)尾,而是不能以奇數(shù)個(gè)反斜線結(jié)尾。
其次,這個(gè)bug的原因是一些處理器(例如主要的正則表達(dá)式引擎)希望進(jìn)行它們自己的反斜線轉(zhuǎn)義處理,而這些處理器不允許字符串以未匹配的反斜線結(jié)尾。
最后,解決辦法就是把反斜線放在另一個(gè)字符串里,Python會(huì)自動(dòng)進(jìn)行合并:
dir=r"\this\is\my\dos\dir""\\"
雖然原生字符串不是很完美,但是它已經(jīng)可以幫我們解決很大一部分的問題了。比如當(dāng)你想匹配"\"的時(shí)候,原生字符串可以讓你至少少寫一半的\,即節(jié)省代碼量,又增加了可讀性。
importre
_string='\\\\'
print(_string)#\\
#字符串
foriinre.findall('\\\\',_string):
print(i)
#\
#\
#原生字符串
foriinre.findall(r'\\',_string):
print(i)
#\
#\
以上內(nèi)容為大家介紹了python培訓(xùn)之反斜杠怎么不轉(zhuǎn)義,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。