Python原始字串(raw strings)用法執行個體

來源:互聯網
上載者:User
本文執行個體講述了Python原始字串(raw strings)用法,分享給大家供大家參考。具體如下:

Python原始字串的產生正是由於有Regex的存在。原因是ASCII 字元和Regex特殊字元間所產生的衝突。比如,特殊符號“\b”在ASCII 字元中代表退格鍵,但同時“\b”也是一個Regex的特殊符號,代表“匹配一個單詞邊界”。

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

但這樣做會把問題複雜化,特別是當你的Regex字串裡有很多特殊字元時,就更容易令人困惑了。一般來說,原始字串經常被用於簡化Regex的複雜程度。

事實上,很多Python 程式員在定義Regex時都只使用原始字串。

下面的例子用來說明退格鍵“\b” 和Regex“\b”(包含或不包含原始字串)之間的區別:

代碼如下:

>>> m = re.match('\bblow', 'blow') # backspace, no match #退格鍵,沒有匹配>>> if m is not None: m.group()
...
>>> m = re.match('\\bblow', 'blow') # escaped \, now it works #用\轉義後,現在匹配了
>>> 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'


你可能注意到我們在Regex裡使用“\d”,沒用原始字串,也沒出現什麼問題。那是因為ASCII 裡沒有對應的特殊字元,所以Regex編譯器能夠知道你指的是一個十進位數字。

原始字串的這個特性讓一些工作變得非常的方便,比如Regex的建立。Regex是一些定義了進階搜尋匹配方式的字串,通常是由代表字元、分組、匹配資訊、變數名和字元類等的特殊符號組成。Regex模組已經包含了足夠用的符號。但當你必須插入額外的符號來使特殊字元表現的像一般字元的時候,你就陷入了“字元數字”的泥潭!這時原始字串就會派上用場了。

除了原始字串符號(引號前面的字母“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程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.