當前位置:首頁 » 編程語言 » python字元串前的r

python字元串前的r

發布時間: 2023-08-26 23:20:12

『壹』 python的string前面加上『r』,

在Python的string前面加上『r』, 是為了告訴編譯器這個string是個raw string,不要轉意backslash '' 。 例如,\n 在raw string中,是兩個字元,\和n, 而不會轉意為換行符。由於正則表達式和 \ 會有沖突,因此,當一個字元串使用了正則表達式後,最好在前面加上'r'。

例:r"\n\n\n\n\n\n」

作用:聲明後面的字元串是普通字元串

特殊字元串中含有: 轉義字元 \n \t 什麼什麼的

用途:一般用在 正則表達式、文件絕對地址

1,正則表達式:

2、系統路徑

這樣就不用專門的去處理引號之中的特殊字元了

『貳』 python字元串前面加r的問題,不會影響\d這個轉義字元

剛開始學python,遇到一個字元串前面加r的問題

理論上,字元串前面加r,會消除轉義字元對字元串的影響

例:

s=r'\tt'

print(s)

Output:

'\tt'

s='\tt'

print(s)

Output:

'        t'

但是我發現對\d這個轉義字元是沒影響的

例如

import re

def re_method():

s ='kjiabc5ty'

    print(re.search(r'喊運abc\d',s).group())

if __name__ =='__main__':

re_method()

依然可以匹配到abc5,並輸出

我百思不得其解

後來在谷歌上搜到答案,大致意思說的\d不是有效的轉義序列,所以python不會更改它,所以'\d' == r'\d'是對的。由於\\  是 有效的轉義序列,因此將其更改為\,因此您得到了該行為'\d' == '宴埋\\d' == r'\d'。所以,字元串有時會造成混亂。

下面我粘貼一段原話

There is a distinction you have to make between the python interpreter and the re mole.

In python, a backslash followed by a character can mean a special character if the string is not rawed. For instance, \n will mean a newline character, \r will mean a carriage return, \t will mean the tab character, \b represents a nondestructive backspace. By itself, \d in a python string does not mean anything special.

In regex however, there are a bunch of characters that would otherwise not always mean anything in python. But that's the catch, 'not always'. One of the things that can be misinterpreted is \b which in python is a backspace, in regex means a word boundary. What this implies is that if you pass on an unrawed \b to the regular expression part of a regex, this \b gets substituted by the backspace  before  it is passed to the regex function and it won't mean a thing there. So you have to absolutely pass the b with its backslash and to do that, you either escape the backslash, or raw the string.

Back to your question regarding \d, \d has no special meaning whatsoever in python, so it remains untouched. The same \d passed as a regular expression gets converted by the regex engine, which is a separate entity to the python interpreter.

翻譯過來

您必須在python解釋器和re模塊之間進行區分。

在python中,如果未原始字元串,則反斜杠後跟一晌滲螞個字元可以表示一個特殊字元。例如,\n表示換行符,\r表示回車,\t表示製表符,\b表示無損退格鍵。就其本身而言,\d在python字元串中並不表示任何特殊含義。

但是在regex中,有一堆字元在python中並不總是意味著任何東西。但這很重要,「並非總是如此」。可能被誤解的一件事是\b在python中是退格,在正則表達式中是單詞邊界。這意味著如果您將未展開\b的正則表達式部分傳遞給正則表達式,則在將其傳遞給regex函數 之前, 它\b會被退格鍵所替代,並且 在 此處不會有任何意義。因此,您必須絕對傳遞b帶有反斜杠的,然後要麼轉義反斜杠,要麼原始字元串。

回到關於的問題\d,\d在python中沒有任何特殊含義,因此保持不變。同樣\d為正則表達式通過得到由正則表達式引擎,這是一個單獨的實體來python解釋轉換。

總之,我還是理解不太清楚,但是總算知道了有這回事。

再次記錄一下,

『叄』 python中 r'', b'', u'', f'' 的含義

1、字元串前+u,如u"我是張三":

前綴u表示該字元串是unicode編碼,在Python2中常被用在中文字元的字元串前,防止因為編碼問題所導致的亂碼,一般在文件開頭標明編碼方式採用utf8。在Python3中,所有的字元串默認都是unicode字元串。

2、旦者字元串前+r,如r" ":

表示一個正常的字元串,通常 被用作換行,而+r後,即表示 ,說白了就是去掉反斜杠的轉義機制,在普通字元串中,反斜線是轉義符,褲者代表一些特殊的內容,常用胡遲薯於特殊的字元,如換行符、正則表達式、文件路徑。注意不能在原始字元串結尾輸入反斜線,否則Python不知道這是一個字元還是換行符(字元串最後用表示換行),會報錯。

3、字元串前+b,如abc=b'Zhangsan':

b' ':表示這是一個bytes對象,用在Python3中,它默認的str是unicode類,Python2的str本身就是bytes類。

b" ":表示後面字元串是bytes類型。

前綴b表示該字元串是bytes類型,常用在網路編程,伺服器和瀏覽器只認bytes類型的數據,如send函數的參數和recv的函數的返回值都是bytes類型。

4、字元串前+f:

Python3.6的新加特性,前綴f用來格式化字元串,可以看出f前綴可以更方便地格式化字元串,比format()方法的可讀性更高,且使用較方便,在加上f前綴後,支持在大括弧內,運行Python表達式,也可以用fr前綴用來表示原生字元串。

『肆』 python r代表什麼意思

r/R,即raw的縮寫,意思是未經加工的;自然狀態的;未經處理的;未經分析的;原始的。
相關推薦:《Python教程》
在Python中r/R表示非轉義的原始字元串。與普通字元相比,其他相對特殊的字元,其中可能包含轉義字元,即那些,反斜杠加上對應字母,表示對應的特殊含義的,比如最常見的」n」表示換行,」t」表示Tab等。而如果是以r開頭,那麼說明後面的字元,都是普通的字元了,即如果是「n」那麼表示一個反斜杠字元,一個字母n,而不是表示換行了。

字母前加r表示raw string,也叫原始字元串常量。一般用在一下兩個方面:
1、正則表達式
用於處理正則表達式時,規避反斜杠的轉義。
2、系統路徑
如下面的路徑,使用r就防止了t的轉義。

『伍』 python正則表達式re.findall(r"\b\w+\b", s)中的r是什麼意思

Python中字元串前面加上
r
表示原生字元串,
與大多數編程語言相同,正則表達式里使用"\"作為轉義字元,這就可能造成反斜杠困擾。假如你需要匹配文本中的字元"\",那麼使用編程語言表示的正則表達式里將需要4個反斜杠"\\\\":前兩個和後兩個分別用於在編程語言里轉義成反斜杠,轉換成兩個反斜杠後再在正則表達式里轉義成一個反斜杠。Python里的原生字元串很好地解決了這個問題,這個例子中的正則表達式可以使用r"\\"表示。同樣,匹配一個數字的"\\d"可以寫成r"\d"。有了原生字元串,你再也不用擔心是不是漏寫了反斜杠,寫出來的表達式也更直觀。

熱點內容
鳳凰地下商城wifi密碼是多少 發布:2025-02-04 14:42:00 瀏覽:902
哈希查找演算法 發布:2025-02-04 14:40:36 瀏覽:465
雲伺服器顯示黑洞 發布:2025-02-04 14:29:05 瀏覽:300
redhatlinux教程 發布:2025-02-04 14:24:48 瀏覽:831
nvidia緩存清理嗎 發布:2025-02-04 14:16:55 瀏覽:307
筆記本電腦如何設置鎖屏密碼 發布:2025-02-04 13:54:42 瀏覽:163
構成c語言程序的基本單位 發布:2025-02-04 13:49:53 瀏覽:990
如何修改已經更改的密碼 發布:2025-02-04 13:38:38 瀏覽:776
唐dm2021買哪個配置劃算 發布:2025-02-04 13:38:38 瀏覽:628
真空壓縮重 發布:2025-02-04 13:38:37 瀏覽:643