簡體   English   中英

確定輸入中的字符串在Python中是否為單個單詞

[英]Determine if string in input is a single word in Python

我被迫使用的大腦崩潰的第三方程序決定了如何處理路徑,具體取決於所提供的輸入是單個單詞還是完整路徑:在前一種情況下,該路徑是相對於某些晦澀的根目錄進行解釋的。

因此,假設輸入可以是完整或相對路徑,也可以是單個單詞(包括下划線和破折號,但不能包含空格),我想知道如何編寫確定輸入是否為單個“單詞”的函數,如下所示:以上定義。

例如:

  • “ Public_345”將被分類為有效的“單詞”
  • “ / home / path / to / something”顯然不是
  • “ Foo bar”也不會被視為有效的“單詞”

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

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM