Python原始字符串(raw strings)用法實(shí)例
本文實(shí)例講述了Python原始字符串(raw strings)用法,分享給大家供大家參考。具體如下:
Python原始字符串的產(chǎn)生正是由于有正則表達(dá)式的存在。原因是ASCII 字符和正則表達(dá)式特殊字符間所產(chǎn)生的沖突。比如,特殊符號(hào)“\b”在ASCII 字符中代表退格鍵,但同時(shí)“\b”也是一個(gè)正則表達(dá)式的特殊符號(hào),代表“匹配一個(gè)單詞邊界”。
為了讓RE 編譯器把兩個(gè)字符“\b”當(dāng)成你想要表達(dá)的字符串,而不是一個(gè)退格鍵,你需要用另一個(gè)反斜線對(duì)它進(jìn)行轉(zhuǎn)義,即可以這樣寫:“\\b”。
但這樣做會(huì)把問題復(fù)雜化,特別是當(dāng)你的正則表達(dá)式字符串里有很多特殊字符時(shí),就更容易令人困惑了。一般來說,原始字符串經(jīng)常被用于簡(jiǎn)化正則表達(dá)式的復(fù)雜程度。
事實(shí)上,很多Python 程序員在定義正則表達(dá)式時(shí)都只使用原始字符串。
下面的例子用來說明退格鍵“\b” 和正則表達(dá)式“\b”(包含或不包含原始字符串)之間的區(qū)別:
...
>>> m = re.match('\\bblow', 'blow') # escaped \, now it works #用\轉(zhuǎn)義后,現(xiàn)在匹配了
>>> if m is not None: m.group()
...
'blow'
>>> m = re.match(r'\bblow', 'blow') # use raw string instead #改用原始字符串>>> if m is not None: m.group()
...
'blow'
你可能注意到我們?cè)谡齽t表達(dá)式里使用“\d”,沒用原始字符串,也沒出現(xiàn)什么問題。那是因?yàn)锳SCII 里沒有對(duì)應(yīng)的特殊字符,所以正則表達(dá)式編譯器能夠知道你指的是一個(gè)十進(jìn)制數(shù)字。
原始字符串的這個(gè)特性讓一些工作變得非常的方便,比如正則表達(dá)式的創(chuàng)建。正則表達(dá)式是一些定義了高級(jí)搜索匹配方式的字符串,通常是由代表字符、分組、匹配信息、變量名和字符類等的特殊符號(hào)組成。正則表達(dá)式模塊已經(jīng)包含了足夠用的符號(hào)。但當(dāng)你必須插入額外的符號(hào)來使特殊字符表現(xiàn)的像普通字符的時(shí)候,你就陷入了“字符數(shù)字”的泥潭!這時(shí)原始字符串就會(huì)派上用場(chǎng)了。
除了原始字符串符號(hào)(引號(hào)前面的字母“r”)以外,原始字符串跟普通字符串有著幾乎完全相同的語法。這個(gè)'r'可以是小寫也可以是大寫,唯一的要求是必須緊靠在第一個(gè)引號(hào)前。在3個(gè)例子的第1個(gè)例子里面,我們需要一個(gè)反斜杠加一個(gè)“n”來而不是一個(gè)換行符。
'\n'
>>> print '\n'
>>> r'\n'
'\\n'
>>> print r'\n'
\n
接下來的例子里,我們打不開我們的README文件了,為什么?因?yàn)?\t'和'\r'被當(dāng)成不在我們的文件名中的特殊符號(hào),但它們實(shí)際上是文件路徑中的4個(gè)獨(dú)立的字符。
File "", line 1, in ?
f = open('C:\windows\temp\readme.txt', 'r')IOError: [Errno 2] No such file or directory: 'C:\\win- dows\\temp\readme.txt'
>>> f = open(r'C:\windows\temp\readme.txt', 'r')>>> f.readline()
'Table of Contents (please check timestamps for last update!)\n'
>>> f.close()
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- python實(shí)現(xiàn)字典(dict)和字符串(string)的相互轉(zhuǎn)換方法
- Python 字符串操作(string替換、刪除、截取、復(fù)制、連接、比較、查找、包含、大小寫轉(zhuǎn)換、分割等)
- 詳解python 字符串和日期之間轉(zhuǎn)換 StringAndDate
- Python列表(list)、字典(dict)、字符串(string)基本操作小結(jié)
- Python的string模塊中的Template類字符串模板用法
- python開發(fā)之字符串string操作方法實(shí)例詳解
- Python實(shí)現(xiàn)string字符串連接的方法總結(jié)【8種方式】
- Python 基礎(chǔ)之字符串string詳解及實(shí)例
- python字符串string的內(nèi)置方法實(shí)例詳解
- Python數(shù)據(jù)類型之String字符串實(shí)例詳解
相關(guān)文章
Python?Excel數(shù)據(jù)處理之xlrd/xlwt/xlutils模塊詳解
在復(fù)雜的Excel業(yè)務(wù)數(shù)據(jù)處理中,三兄弟扮演的角色缺一不可。如何能夠使用xlrd/xlwt/xlutils三個(gè)模塊來實(shí)現(xiàn)數(shù)據(jù)處理就是今天的內(nèi)容,希望對(duì)大家有所幫助2023-03-03python通過TimedRotatingFileHandler按時(shí)間切割日志
這篇文章主要介紹了python通過TimedRotatingFileHandler按時(shí)間切割日志的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07python基于tkinter圖形化編程實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了python基于tkinter圖形化編程實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)
如今的游戲可謂是層出不窮,不過小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機(jī)游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個(gè)簡(jiǎn)單的賽車游戲,感興趣的可以了解一下2022-03-03pandas如何實(shí)現(xiàn)兩個(gè)dataframe相減
這篇文章主要介紹了pandas如何實(shí)現(xiàn)兩個(gè)dataframe相減方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02python3.6.3+opencv3.3.0實(shí)現(xiàn)動(dòng)態(tài)人臉捕獲
這篇文章主要為大家詳細(xì)介紹了python3.6.3+opencv3.3.0實(shí)現(xiàn)動(dòng)態(tài)人臉捕獲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python 實(shí)現(xiàn)敏感目錄掃描的示例代碼
這篇文章主要介紹了Python 實(shí)現(xiàn)敏感目錄掃描的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05