2010-02-22 78 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

相关问题