国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-23 06:04:54
字體:
供稿:網(wǎng)友

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

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

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

事實上,很多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 里沒有對應(yīng)的特殊字符,所以正則表達式編譯器能夠知道你指的是一個十進制數(shù)字。

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

除了原始字符串符號(引號前面的字母“r”)以外,原始字符串跟普通字符串有著幾乎完全相同的語法。這個'r'可以是小寫也可以是大寫,唯一的要求是必須緊靠在第一個引號前。在3個例子的第1個例子里面,我們需要一個反斜杠加一個“n”來而不是一個換行符。
代碼如下:>>> '/n'
'/n'
>>> print '/n'
>>> r'/n'
'//n'
>>> print r'/n'
/n
接下來的例子里,我們打不開我們的README文件了,為什么?因為'/t'和'/r'被當(dāng)成不在我們的文件名中的特殊符號,但它們實際上是文件路徑中的4個獨立的字符。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鸡东县| 武宣县| 礼泉县| 康定县| 荣成市| 仙桃市| 新邵县| 南投市| 桃园县| 彭阳县| 青河县| 宜城市| 滨海县| 安康市| 文化| 巨鹿县| 古田县| 凤山县| 耿马| 凭祥市| 文登市| 措勤县| 沙田区| 鱼台县| 永德县| 综艺| 阳新县| 新宁县| 铁力市| 吉木萨尔县| 镇远县| 洛扎县| 崇信县| 大足县| 绥滨县| 威远县| 桂平市| 红安县| 南安市| 柳州市| 湄潭县|