使用原始字符串:
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
注意的是,雖然它看起來錯誤,它實際上對。字符串foo
中只有一個反斜槓。
發生這種情況是因爲在提示符下輸入foo
時,python會在字符串上顯示__repr__()
的結果。這導致以下(注意只有一個反斜槓和周圍的print
編輯字符串不包括引號):
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
>>> print foo
baz "\"
而且,我們繼續向前,因爲有更多的反斜槓技巧。如果你想擁有在字符串的結尾反斜槓,用上面的方法,你會遇到一個問題:當你這樣做
>>> foo = r'baz \'
File "<stdin>", line 1
foo = r'baz \'
^
SyntaxError: EOL while scanning single-quoted string
原始字符串不能正常工作。你必須使用一個普通字符串和逃避你的反斜線:
>>> foo = 'baz \\'
>>> print foo
baz \
但是,如果你正在使用Windows文件名的工作,你在一些痛苦。你想要做的是使用正斜槓和os.path.normpath()
功能:
myfile = os.path.normpath('c:/folder/subfolder/file.txt')
open(myfile)
這將節省大量逃逸,頭髮撕裂。 This page通過這個會前一陣子,當是得心應手。
如果打印查爾斯達菲上面那樣,它會正確顯示。當你只做「foo」時,Python正在使用__repr __()函數來顯示字符串。它的輸出帶有一個額外的反斜槓,因此當你將結果賦值給一個變量時,其內容將是相同的。 – 2008-11-19 05:31:42