最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python字符串和正則表達(dá)式中的反斜杠('\')問題詳解

 更新時(shí)間:2019年09月03日 15:11:29   作者:miaoning  
在本篇文章里小編給大家整理的是關(guān)于Python字符串和正則表達(dá)式中的反斜杠('\')問題以及相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。

在Python普通字符串中

在Python中,我們用'\'來轉(zhuǎn)義某些普通字符,使其成為特殊字符,比如

In [1]: print('abc\ndef') # '\n'具有換行的作用
abc
defg

In [2]: print('abc\tdef') # '\t'具有制位符的作用           
abc  defg

我們還可以用'\'來轉(zhuǎn)義特殊字符,使其成為普通字符,比如

In [3]: print('abc\\tdef') # 使'\'成為一個(gè)普通的字符,沒有轉(zhuǎn)義作用
abc\tdef

In [4]: print('abc\'tdef') # 使'''成為一個(gè)普通的字符,不再需要和另一半單引號(hào)'''配對(duì)              
abc'tde

所以,在python普通字符串中,我們不能以奇數(shù)個(gè)'\'結(jié)尾,這樣會(huì)導(dǎo)致結(jié)束的的引號(hào)轉(zhuǎn)義成一個(gè)純字符,從而使得這段字符串沒有引號(hào)來結(jié)束。

在Python原生字符串中

我們?cè)谧址凹右粋€(gè)'r'來表示原生字符串,比如r'abc'。原生字符串中的特殊字符的特殊含義將會(huì)被剝奪掉,如下

In [5]: print(r'abc\ndefg') # '\n'沒有換行的作用,僅僅是一個(gè)普通的字符串             
abc\ndefg

In [6]: print(r'abc\tdefg') # '\t'沒有制位符的作用,僅僅是一個(gè)普通的字符串          
abc\tdef

這里有一個(gè)奇怪的問題,在原生字符串中,雖然'\'成為了一個(gè)普通的字符串,但我們同樣不能以奇數(shù)個(gè)'\'字符串結(jié)尾,這是因?yàn)镻ython正則表達(dá)式的原因,在正則表達(dá)式中我們將會(huì)解釋這個(gè)問題。

在Python(regular express)正則表達(dá)式中

Python正則表達(dá)式中會(huì)有一些不同,正則表達(dá)式中指定了一些元字符(metacharacter),如下

. ^ $ * + ? { } [ ] \ | ( )

它們都具有特殊的含義,'\'也屬于元字符。'\'既屬于Python中的特殊字符,也屬于正則中的元字符,所以使用時(shí)得非常小心。那么在正則中,'\'的作用是什么呢?我們看一個(gè)例子

In [7]: re.search('.', 'sd.f')               
Out[7]: <_sre.SRE_Match object; span=(0, 1), match='s'>

In [8]: re.search('\.', 'sd.f')              
Out[8]: <_sre.SRE_Match object; span=(2, 3), match='.'>In [9]: re.search('\n', 'sdfd\nfds')            Out[9]: <_sre.SRE_Match object; span=(4, 5), match='\n'>

"""
'.'作為一個(gè)元字符,它的特殊含義是匹配任意一個(gè)字符,而當(dāng)我們?cè)谄淝懊婕?\'后,它的特殊含義消失了,匹配到的是'.';而且'\'依然可以把Python中某些字符轉(zhuǎn)義成特殊字符。
"""

所以,'\'的作用是剝奪元字符的特殊含義,使其成為一個(gè)Python字符,所以它還是會(huì)具有在Python普通字符串中的轉(zhuǎn)義作用,比如'\n'依然表示換行。所以,'\'既是正則中的一個(gè)元字符,又是Python中的一個(gè)特殊字符。那么我們?cè)撊绾纹ヅ涞郊冏址?\'(無任何特殊意義)?

在正則中,'\'的作用是把元字符轉(zhuǎn)義成Python字符串文字(a Python string literal),所以正則中的'\\'其實(shí)是其實(shí)是Python字符中的'\',它仍然還具有轉(zhuǎn)義作用,所以在正則中我們還得對(duì)每個(gè)'\'再進(jìn)行轉(zhuǎn)義一次,即'\\\\',這樣就可以匹配到純字符'\'了。看下面例子

In [10]: re.search('\\\\', 'fsd\nfds') # 目標(biāo)字符串中沒有純字符'\',所以匹配為空

In [11]: re.search('\\\\', 'fsd\\nfds')                     
Out[11]: <_sre.SRE_Match object; span=(3, 4), match='\\'> # Python字符串中,'\\'就是純字符'\'

在re中反復(fù)的使用'\',這可能會(huì)生成大量的連續(xù)的反斜杠,從而導(dǎo)致某些字符串難以理解。解決的辦法是用Python原生字符串來書寫正則表達(dá)式,如下

In [12]: re.search(r'\\', 'fsd\\nfds') # 兩個(gè)'\\'就可以匹配到純字符'\'
Out[12]: <_sre.SRE_Match object; span=(3, 4), match='\\'>

另外,當(dāng)我們用原生字符串來書寫正則表達(dá)式時(shí),Python字符中的特殊字符依然有效,比如

In [13]: re.search(r'\n', 'fsd\nfds')                      
Out[13]: <_sre.SRE_Match object; span=(3, 4), match='\n'>
"""
在Python字符中,r'\n'僅僅表示純字符串'\n',沒有換行的作用;在正則中,r'\n'依然還有換行的作用。所以此時(shí)我們不能用奇數(shù)個(gè)'\'來結(jié)尾某個(gè)正則表達(dá)式,這樣導(dǎo)致結(jié)束的引號(hào)被轉(zhuǎn)義成一個(gè)純字符,無結(jié)束符號(hào)。所以,在Python原生字符串中,我們也同樣規(guī)定不能用奇數(shù)個(gè)'\'來結(jié)尾。
"""

以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 本地部署Python?Flask并搭建web問答應(yīng)用程序框架實(shí)現(xiàn)遠(yuǎn)程訪問的操作方法

    本地部署Python?Flask并搭建web問答應(yīng)用程序框架實(shí)現(xiàn)遠(yuǎn)程訪問的操作方法

    Flask是一個(gè)Python編寫的Web微框架,使用Python語言快速實(shí)現(xiàn)一個(gè)網(wǎng)站或Web服務(wù),本期教程我們使用Python Flask搭建一個(gè)web問答應(yīng)用程序框架,并結(jié)合cpolar內(nèi)網(wǎng)穿透工具將我們的應(yīng)用程序發(fā)布到公共網(wǎng)絡(luò)上,實(shí)現(xiàn)可多人遠(yuǎn)程進(jìn)入到該web應(yīng)用程序訪問,需要的朋友可以參考下
    2023-12-12
  • 使用Python實(shí)現(xiàn)在Windows下安裝Django

    使用Python實(shí)現(xiàn)在Windows下安裝Django

    今天小編就為大家分享一篇關(guān)于使用Python實(shí)現(xiàn)在Windows下安裝Django,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • python GUI庫圖形界面開發(fā)之PyQt5線程類QThread詳細(xì)使用方法

    python GUI庫圖形界面開發(fā)之PyQt5線程類QThread詳細(xì)使用方法

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5線程QThread類詳細(xì)使用方法,需要的朋友可以參考下
    2020-02-02
  • Python利用pandas對(duì)數(shù)據(jù)進(jìn)行特定排序

    Python利用pandas對(duì)數(shù)據(jù)進(jìn)行特定排序

    本文主要介紹了Python利用pandas對(duì)數(shù)據(jù)進(jìn)行特定排序,主要使用?pandas.DataFrame.sort_values?方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • python?HTTP協(xié)議相關(guān)庫requests urllib基礎(chǔ)學(xué)習(xí)

    python?HTTP協(xié)議相關(guān)庫requests urllib基礎(chǔ)學(xué)習(xí)

    這篇文章主要介紹了python?HTTP協(xié)議相關(guān)庫requests urllib基礎(chǔ)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 淺析Python的Django框架中的Memcached

    淺析Python的Django框架中的Memcached

    這篇文章主要介紹了淺析Python的Django框架中的緩存機(jī)制,其中著重講到了Memcached,需要的朋友可以參考下
    2015-07-07
  • 詳解Django框架中用戶的登錄和退出的實(shí)現(xiàn)

    詳解Django框架中用戶的登錄和退出的實(shí)現(xiàn)

    這篇文章主要介紹了詳解Django框架中用戶的登錄和退出的實(shí)現(xiàn),Django是重多Python人氣框架中最為知名的一個(gè),需要的朋友可以參考下
    2015-07-07
  • Python爬蟲PyQuery庫基本用法入門教程

    Python爬蟲PyQuery庫基本用法入門教程

    這篇文章主要介紹了Python爬蟲PyQuery庫基本用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pyQuery庫字符串初始化、打開網(wǎng)頁、css屬性、標(biāo)簽內(nèi)容等獲取、DOM基本操作等相關(guān)技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • pytest進(jìn)階教程之fixture函數(shù)詳解

    pytest進(jìn)階教程之fixture函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于pytest進(jìn)階教程之fixture函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解Python 中sys.stdin.readline()的用法

    詳解Python 中sys.stdin.readline()的用法

    這篇文章主要介紹了Python 中sys.stdin.readline()的用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

曲麻莱县| 石河子市| 紫金县| 阿尔山市| 辛集市| 固阳县| 固镇县| 民权县| 大同县| 且末县| 酒泉市| 六安市| 武定县| 鄱阳县| 额尔古纳市| 徐汇区| 贵州省| 通城县| 简阳市| 怀化市| 青神县| 岳普湖县| 大足县| 河间市| 武宁县| 筠连县| 西吉县| 萝北县| 鹤壁市| 宁化县| 海阳市| 揭西县| 永德县| 拉萨市| 射洪县| 自治县| 榆社县| 罗江县| 六枝特区| 巫山县| 哈尔滨市|