我有問題,在字符串指的特殊符號:如何引用「」符號在Python字符串
我:path='C:\dir\dir1\dir2\filename.doc'
,我想filename
。
當我嘗試:filename=path[path.rfind("\"):-4]
然後解釋說,這是一個錯誤行權的「\」,因爲被視爲註釋。
我有問題,在字符串指的特殊符號:如何引用「」符號在Python字符串
我:path='C:\dir\dir1\dir2\filename.doc'
,我想filename
。
當我嘗試:filename=path[path.rfind("\"):-4]
然後解釋說,這是一個錯誤行權的「\」,因爲被視爲註釋。
您可以使用"\\"
,在技術上這將是更好地使用os.path.sep
如果你堅持關於使用反斜槓。但更好的是,在你的路徑中使用/
,它在Windows上正常工作
Python有builtin functions to manipulate paths。需要注意的是你需要的,如果你還是喜歡他們forwardslashes
>>> import os
>>> path='C:\\dir\\dir1\\dir2\\filename.doc'
>>> os.path.splitext(os.path.basename(path))
('filename', '.doc')
了反斜槓和使用forwardslashes
>>> path='C:/dir/dir1/dir2/filename.doc'
>>> os.path.splitext(os.path.basename(path))
('filename', '.doc')
+1點對已經工作且便攜的標準實施方案。 – delnan 2010-08-20 13:58:50
+1爲同樣的事情@delnan說 – 2010-08-20 14:01:57
+1:非常好的答案。忘了這個,但:http://docs.python.org/library/os.path.html – 2010-08-20 14:02:09
將其轉義爲「\\」或使用如下所示的原始字符串:r「\」。
您不能使用'\'結束原始字符串,所以'r「\」'不起作用 – 2010-08-20 13:52:37
@Gnibbler:'path = r'C:\ dir \ dir1 \ dir2 \ filename.doc''起作用。你有什麼想法? – 2010-08-20 13:54:24
@Manoj:@Gnibbler是對的,'r'\「'不起作用(也不是'r'C:\ dir \ dir1 \ dir2'),因爲即使在原始字符串中,'\''/' \「'仍然逃脫(它必須) – delnan 2010-08-20 13:56:22
您可以鍵入雙倍的「\」。
但是到文件名中分裂出來的Windows文件名,使用分區os.path.split這樣只/工程:
>>> path=r'C:\dir\dir1\dir2\filename.doc'
>>> print path.rpartition('\\')[-1]
filename.doc
你不能用'\'結束原始字符串,所以'r」\「'不起作用 – 2010-08-20 13:51:38
在使用IDLE的時候注意到它,並且在你的註釋之前10分鐘進行了編輯,與我放入rpartition代碼的時間一樣,可能\不適合os.path.split,因爲我現在正在運行Linux。 – 2010-08-20 14:22:00
編輯10分鐘_after_我的評論:) – 2010-08-20 14:31:13
也有一些是關於這個在FAQ:Why can’t raw strings (r-strings) end with a backslash?
如果您'試圖構建Windows 路徑名,請注意所有Windows 系統調用也接受正斜槓 :
f = open("/mydir/file.txt") # works fine!
如果您嘗試爲DOS命令構建路徑名 ,請嘗試其中之一
dir = r"\this\is\my\dos\dir" "\\" dir = r"\this\is\my\dos\dir\ "[:-1] dir = "\\this\\is\\my\\dos\\dir"
請閱讀文檔。 HTTP://docs.python。org/reference/lexical_analysis.html#string-literals說'\\\' – 2010-08-20 13:50:37
您可能想要儘量避免在腳本中放置文字路徑;通過從其他來源(命令行,基本配置文件等)獲取文件名,可以避免這個問題。使您的代碼更加可重用。 – 2010-08-20 14:18:29