python中的反斜杠問題深入講解
前言
python本身使用 \ 來轉(zhuǎn)義一些特殊字符,比如在字符串中加入引號(hào)的時(shí)候
s = 'i\'m superman' print(s) # i'm superman
為了防止和字符串本身的引號(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è) \。
補(bǔ)充——————————————————
python的原生字符串不能以反斜杠結(jié)尾的問題
Python的原生字符串(raw string)是個(gè)很有用的東西,可以少寫很多反斜線(轉(zhuǎn)義符號(hào))。
不過它有個(gè)著名的bug,就是不能以反斜線結(jié)尾,這讓人很無語。今天突然發(fā)現(xiàn)General Python FAQ里有進(jìn)行說明,并給出了解決辦法。
首先要澄清的是不是不能以反斜線結(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" "\\"
補(bǔ)充結(jié)束——————————————————
雖然原生字符串不是很完美,但是它已經(jīng)可以幫我們解決很大一部分的問題了。比如當(dāng)你想匹配"\"的時(shí)候,原生字符串可以讓你至少少寫一半的\,即節(jié)省代碼量,又增加了可讀性。
import re _string = '\\\\' print(_string) # \\ # 字符串 for i in re.findall('\\\\', _string): print(i) # \ # \ # 原生字符串 for i in re.findall(r'\\', _string): print(i) # \ # \
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。
- python中路徑字符串斜杠替換方式
- python指定路徑斜杠與反斜杠遇到的問題
- python中的正斜杠與反斜杠實(shí)例驗(yàn)證
- python使用正則表達(dá)式匹配反斜杠\遇到的問題
- 一篇文章搞懂Python反斜杠的相關(guān)問題
- python正則表達(dá)式 匹配反斜杠的操作方法
- python如何輸出反斜杠
- Python字符串和正則表達(dá)式中的反斜杠(''\'')問題詳解
- Python中正反斜杠(‘/’和‘\’)的意義與用法
- 解決Python正則表達(dá)式匹配反斜杠''''\''''問題
- Python3.6-MySql中插入文件路徑,丟失反斜杠的解決方法
- 一文詳細(xì)介紹Python兩條斜杠 // 的作用和用法
相關(guān)文章
如何將conda虛擬環(huán)境添加到Jupyter lab內(nèi)核
這篇文章主要介紹了如何將conda虛擬環(huán)境添加到Jupyter lab內(nèi)核問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06python判斷計(jì)算機(jī)是否有網(wǎng)絡(luò)連接的實(shí)例
今天小編就為大家分享一篇python判斷計(jì)算機(jī)是否有網(wǎng)絡(luò)連接的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12python求numpy中array按列非零元素的平均值案例
這篇文章主要介紹了python求numpy中array按列非零元素的平均值案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06django admin search_fields placeholder 管理后臺(tái)添加搜索框提示文字
這篇文章主要介紹了django admin search_fields placeholder 管理后臺(tái)添加搜索框提示文字,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Ubuntu中安裝指定Python版本方法詳解(理論上各版本通用)
現(xiàn)在基于linux的發(fā)行版本有很多,有centos,ubuntu等,一般基于linux的衍生系統(tǒng)至少都安裝了Python2版本,但是現(xiàn)在Python已經(jīng)是3.x版本大行其道了,這篇文章主要給大家介紹了關(guān)于Ubuntu中安裝指定Python版本方法的相關(guān)資料,理論上各版本通用,需要的朋友可以參考下2023-06-06PyCharm最新激活碼(2020/10/27全網(wǎng)最新)
Pycharm最新激活碼全網(wǎng)最新(2020/10/27更新),適用Intellij idea 2020.2.x,WebStorm 2020.2.x,Pycharm 2020.2.x2020-10-10opencv調(diào)用yolov3模型深度學(xué)習(xí)目標(biāo)檢測實(shí)例詳解
這篇文章主要為大家介紹了opencv調(diào)用yolov3模型深度學(xué)習(xí)目標(biāo)檢測實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Python辦公自動(dòng)化之定時(shí)郵件提醒和音視頻文件處理
這篇文章主要為大家詳細(xì)介紹了Python辦公自動(dòng)化中定時(shí)郵件提醒和音視頻文件處理的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下2023-12-12