2010-02-22 40 views
1

我不得不使用的腦死亡第三方程序決定如何處理路徑,具體取決於提供的輸入是單個字還是完整路徑:在前一種情況下,路徑被解釋爲相對於一些模糊的根目錄。因此,假設輸入可以是完整或相對路徑,或單個單詞(包括下劃線和破折號,但不包括空格),我想知道如何編寫一個函數來確定輸入是否是單個如上所述的「單詞」。確定輸入中的字符串是否是Python中的單個字

例如:

  • 「Public_345」 將是有效的歸類 「字」
  • 「的/ home /路徑/到/某事」 顯然是不
  • 「富巴」 也沒有將被認爲是一個有效的「字」

由於字符串方法不行,我想知道是否有可能使用正則表達式。起初,我想到了這樣的事情:

match = re.compile(r"[\w-]+") 
word = "abdcde_-4" 
if len(re.findall(match, word)) == 1: 
    print "Single word" 

但是,它確實感覺非常難看,我敢肯定,它不抓住角落案件。那裏有更好的解決方案嗎?

回答

4

你可以調整你的正則表達式來匹配整個輸入字符串,這樣你就不必計數匹配了。即

if re.match(r'\A[\w-]+\Z', word): 
    print "Single word" 

(編譯正則表達式,如果你覺得這樣的傾向)

\A\Z分別匹配開頭和輸入字符串的結束。因此,如果您的word包含除路徑之外的其他數據,則上述方法不起作用。

3
>>> r="Foo bar".split() 
>>> if len(r) != 1: print "not ok" 
... 
not ok 
>>> if "/" in "/home/path/to/something": 
... print "ok" 
... 
ok 
0

只要檢查字符串,看它是否包含' '(空格)或'\'(路徑分隔符)。如果是這樣,那麼它不是一個「單詞」。

0

檢查os.path模塊。您可以使用os.path.abspath()將給定路徑轉換爲完整路徑(如果它位於同一系統上)。

如果字符串中有任何空格字符,可以使用以下代碼片段進行檢查。

if(str.split()[ - 1] == str)return True

相關問題