[英]Determine if string in input is a single word in Python
我被迫使用的大腦崩潰的第三方程序決定了如何處理路徑,具體取決於所提供的輸入是單個單詞還是完整路徑:在前一種情況下,該路徑是相對於某些晦澀的根目錄進行解釋的。
因此,假設輸入可以是完整或相對路徑,也可以是單個單詞(包括下划線和破折號,但不能包含空格),我想知道如何編寫確定輸入是否為單個“單詞”的函數,如下所示:以上定義。
例如:
由於字符串方法不可行,我想知道是否可以使用正則表達式。 最初我想到了這樣的事情:
match = re.compile(r"[\w-]+")
word = "abdcde_-4"
if len(re.findall(match, word)) == 1:
print "Single word"
但是,它確實感覺非常丑陋,而且我很確定它不會遇到麻煩。 周圍是否有(很多)更好的解決方案?
您可以調整正則表達式以匹配整個輸入字符串,這樣就不必計算匹配項了。 即
if re.match(r'\A[\w-]+\Z', word):
print "Single word"
(如果您傾向於,則編譯正則表達式)
\\A
和\\Z
匹配輸入字符串的開頭和結尾。 因此,如果您的word
除了路徑之外還包含其他數據,則上述方法無效。
>>> r="Foo bar".split()
>>> if len(r) != 1: print "not ok"
...
not ok
>>> if "/" in "/home/path/to/something":
... print "ok"
...
ok
只需檢查字符串,看看它是否包含' '
(空格)或'\\'
(路徑分隔符)。 如果是這樣,那么它不是一個“單詞”。
檢查os.path模塊。 您可以使用os.path.abspath()將給定路徑轉換為完整路徑(如果在同一系統上)。
您可以使用以下代碼段檢查字符串是否包含空格字符。
if(str.split()[-1] == str)返回True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.