2013-04-20 67 views
1

我找得到,看起來像一個變量的文件名的最佳方式:得到一個字符串的字符(右一)

a = 'this\is\a\path\to\file' 
print a[-4:] 

我試圖讓「文件」只是打印提取的最後四個字母[-4:],但結果是:

ile 

如果我做一個打印[-5:]我得到:

ofile 

我區ess python有一個反斜槓的問題,轉義它並沒有幫助。你會如何解決這個問題?你會按照我的方式去做,還是通過從右向左搜索'\'來獲得「文件」的性能更高?

回答

4

\f是Python中的單個字符(form-feed)。嘗試加倍您的反斜槓:

a = 'this\\is\\a\\path\\to\\file' 

或等價:

a = r'this\is\a\path\to\file' 

print a[-4:]後,將打印file

+0

已解決。我怎麼能忘記......謝謝! – Johnny 2013-04-20 08:43:34

+0

還有一種方法不會改變變量a嗎?像r'(a)'...因爲我不能編輯一個,我需要使用它非轉義 – Johnny 2013-04-20 08:47:09

+0

@JohnBrown它會逃脫已經不用擔心,它只是當你手動寫錯了,就像它出來錯了但Python模塊將產生正確的結果。也是最好的方式'os.path.splitext' – jamylak 2013-04-20 09:13:09

1
>>> a = r'this\is\a\path\to\file' 
>>> print a[-4:] 
file 
2
>>> import os 
>>> a = 'A/B' 
>>> os.path.normpath(a) 
'A\\B' 
>>> a = 'A/./B' 
>>> os.path.normpath(a) 
'A\\B' 
>>> a = 'A\B' 
>>> os.path.normpath(a) 
'A\\B' 
>>> a = 'A\\B' 
>>> os.path.normpath(a) 
'A\\B' 

,而不是使用然後[-4:]更好的做法是使用「A // B'.split(os.path.sep) - 1]那麼你一定要得到全路徑的最後部分。 os.path.sep在當前操作系統中返回分隔符。