日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python原始字符串(raw strings)用法實例

系統(tǒng) 1763 0

本文實例講述了Python原始字符串(raw strings)用法,分享給大家供大家參考。具體如下:
?
Python原始字符串的產(chǎn)生正是由于有正則表達式的存在。原因是ASCII 字符和正則表達式特殊字符間所產(chǎn)生的沖突。比如,特殊符號“\b”在ASCII 字符中代表退格鍵,但同時“\b”也是一個正則表達式的特殊符號,代表“匹配一個單詞邊界”。

為了讓RE 編譯器把兩個字符“\b”當成你想要表達的字符串,而不是一個退格鍵,你需要用另一個反斜線對它進行轉(zhuǎn)義,即可以這樣寫:“\\b”。

但這樣做會把問題復雜化,特別是當你的正則表達式字符串里有很多特殊字符時,就更容易令人困惑了。一般來說,原始字符串經(jīng)常被用于簡化正則表達式的復雜程度。

事實上,很多Python 程序員在定義正則表達式時都只使用原始字符串。

下面的例子用來說明退格鍵“\b” 和正則表達式“\b”(包含或不包含原始字符串)之間的區(qū)別:

復制代碼 代碼如下:
>>> m = re.match('\bblow', 'blow') # backspace, no match #退格鍵,沒有匹配>>> if m is not None: m.group()
...
>>> 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'

你可能注意到我們在正則表達式里使用“\d”,沒用原始字符串,也沒出現(xiàn)什么問題。那是因為ASCII 里沒有對應的特殊字符,所以正則表達式編譯器能夠知道你指的是一個十進制數(shù)字。

原始字符串的這個特性讓一些工作變得非常的方便,比如正則表達式的創(chuàng)建。正則表達式是一些定義了高級搜索匹配方式的字符串,通常是由代表字符、分組、匹配信息、變量名和字符類等的特殊符號組成。正則表達式模塊已經(jīng)包含了足夠用的符號。但當你必須插入額外的符號來使特殊字符表現(xiàn)的像普通字符的時候,你就陷入了“字符數(shù)字”的泥潭!這時原始字符串就會派上用場了。

除了原始字符串符號(引號前面的字母“r”)以外,原始字符串跟普通字符串有著幾乎完全相同的語法。這個'r'可以是小寫也可以是大寫,唯一的要求是必須緊靠在第一個引號前。在3個例子的第1個例子里面,我們需要一個反斜杠加一個“n”來而不是一個換行符。

復制代碼 代碼如下:
>>> '\n'
'\n'
>>> print '\n'
>>> r'\n'
'\\n'
>>> print r'\n'
\n

接下來的例子里,我們打不開我們的README文件了,為什么?因為'\t'和'\r'被當成不在我們的文件名中的特殊符號,但它們實際上是文件路徑中的4個獨立的字符。
復制代碼 代碼如下:
>>> f = open('C:\windows\temp\readme.txt', 'r') Traceback (most recent call last):
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()

希望本文所述對大家的Python程序設(shè)計有所幫助。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 通山县| 交城县| 浮梁县| 枣庄市| 阳山县| 和田县| 唐山市| 铅山县| 牡丹江市| 丹凤县| 华蓥市| 大方县| 浙江省| 定兴县| 土默特右旗| 婺源县| 花垣县| 邻水| 抚顺县| 大悟县| 财经| 宁陵县| 汤阴县| 贞丰县| 罗源县| 会同县| 安平县| 兴海县| 民县| 宁南县| 东莞市| 庆阳市| 连南| 金坛市| 玛曲县| 尚志市| 三亚市| 定西市| 潜山县| 太康县| 宝坻区|