2013-09-26 64 views
5

我發現這可能是非常有用的蟒蛇script,但在這些表情,我以前從來沒見過就來了:未知Python表達式文件名= R「/路徑/到/文件」

inputfilename = r'/path/to/infile' 
outputfilename = r'/path/to/outfile' 

我不能找到一種方法來搜索它。 r'...'是做什麼的?

感謝您的幫助!

+1

這是一個「原始字符串」,請參閱[文檔](http://docs.python.org/3.3/library/re.html#raw-string-notation)。通常可以在不轉義的情況下編寫特殊字符(例如'\')。 – bbayles

+1

r是一個原始字符串文字,它可以讓你忘記轉義序列! HTTP://計算器。com/questions/3517802/python-raw-literal-string – Vivek

+0

這種情況並沒有什麼不同,但是如果路徑中有反斜槓,你會希望包含'r' – beroe

回答

5

r'..'字符串修飾符導致'..'字符串被解釋爲字面上。這意味着,r'My\Path\Without\Escaping'將評估爲'My\Path\Without\Escaping' - 不會導致反斜槓轉義字符。之前相當於'My\\Path\\Without\\Escaping'字符串,但沒有原始修飾符。

注意:字符串不能以奇數個反斜槓結尾,即r'Bad\String\Example\'不是正確的字符串。

+2

...有一個例外:'r'My \ Path \ Without \ Escaping \'不起作用。即使原始字符串不會以奇數個反斜槓結尾。 –

+0

@TimPietzcker,謝謝,修正! –

3

它被稱爲原始字符串文字。

根據Python String literals documentation

反斜槓(\)字符用於轉義 否則具有特殊含義的字符,例如換行,反斜槓本身, 或引號字符。字符串文字可以選擇以字母'r'或'R'作爲前綴 ;這樣的字符串被稱爲原始字符串,並使用不同的規則來解釋反斜槓轉義序列。

...

除非一個「R」或「R」的前綴是目前,在字符串 轉義序列根據類似於標準C語言使用的規則被解釋

0

它只是意味着原始字符串在Python中。這意味着,無論是在字符串內部,都是字符串。例如,如果你想添加斜線:

string1 = "happy\/cheese" 

您將需要在自一個轉義字符斜槓前加\。例如,\n意味着一條新線。

如果你保持字符串raw,它確保不管字符串中的內容是不是一種特殊的解釋方式。例如,如果你寫了string2 = r"\n",它會給你"\n"字符串,而不是一個新的行。

您可以從here瞭解更多關於它們的信息。

現在,這是在你的情況下完成的,因爲文件路徑有很多斜槓,我們希望避免必須放置如此多的反斜槓。

相關問題