2017-02-21 92 views
0

是否有影響功能r'some string'什麼是r-前綴的函數?

例如,我們有一些變量s='a:b\nc'。我們想在稍後的某個地方轉義它,那麼什麼功能可以做到這一點?

re.escape轉義:太,所以它不等同於r-前綴。基本上r等價函數應該給a:b\\nc作爲一個原始字符串,而不是a\:b\\nc,對不對?

+2

我不認爲'r'做你認爲它做。 –

+3

[Python原始字符串]的可能重複(http://stackoverflow.com/questions/4415259/python-raw-strings) –

+1

一旦字符串已經被解析並且*在內存*中,那麼就沒有'r '。例如,假設我有'x ='a:\ u0041'',你希望你的函數對'x'做什麼?值「x」等於文字「a a:A」。如果你想要一個''a:\'',這就是'r'所能做的,那麼就沒有辦法做到這一點,因爲解釋器不再提供原始文字表示。 (至少,不是沒有某種心理手動重新編碼代碼文件或類似的東西在牆上。)不清楚你想要什麼結果。 – jpmc26

回答

0

您可能對字符串文字的原始前綴實際上做了什麼有點困惑,但無論如何,我認爲我理解了這個問題:您想要跳過反斜槓。

這是我能找到的最接近的東西。有可能是更好的方法:

>>> import codecs 
>>> s = 'a:b\nc' 
>>> codecs.encode(s, 'unicode-escape').decode('utf-8') 
'a:b\\nc' 
+0

謝謝,之前試過'codecs.escape_encode',它沒有工作。現在我明白了,在此之前,我應該將字符串轉換爲字節。但是這會導致3個步驟,你使用'codecs.encode'的方法是兩個。 – Nick

+0

目前尚不清楚OP想要什麼。考慮字符串「'a:\ u0041''。 OP是否想要'a a:A'或''a:\\ u0041''?你的答案返回前者。 – jpmc26

+0

@ jpmc26你是對的,但如果他們想要更多的幫助,他們可以澄清它。 – wim

相關問題