确定输入中的字符串是否是Python中的单个单词

时间:2010-02-22 13:15:41

标签: python string

我被迫使用的脑死亡第三方程序决定了如何处理路径,具体取决于提供的输入是单个单词还是完整路径:在前一种情况下,路径是相对于某些模糊的根目录进行解释的

因此,假设输入可以是完整或相对路径,或单个单词(包括下划线和短划线,但不是空格),我想知道如何编写一个函数来确定输入是否是单个“ “如上所述。

例如:

  • “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"
但是,它确实感觉非常难看,而且我很确定它没有抓住角落的情况。那边有(很多)更好的解决方案吗?

4 个答案:

答案 0 :(得分:5)

您可以调整正则表达式以匹配整个输入字符串,这样您就不必计算匹配项。即。

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

(如果您有这种倾向,请编译正则表达式)

\A\Z分别匹配输入字符串的开头和结尾。因此,如果您的word除了路径之外还包含其他数据,那么上述方法就不起作用。

答案 1 :(得分:3)

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

答案 2 :(得分:0)

只需检查字符串,看它是否包含' '(空格)或'\'(路径分隔符)。如果确实如此,则不是“单个单词”。

答案 3 :(得分:0)

检查os.path模块。您可以使用os.path.abspath()将给定路径转换为完整路径(如果它位于同一系统上)。

如果字符串包含任何空白字符,您可以查看以下代码段。

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