我被迫使用的脑死亡第三方程序决定了如何处理路径,具体取决于提供的输入是单个单词还是完整路径:在前一种情况下,路径是相对于某些模糊的根目录进行解释的
因此,假设输入可以是完整或相对路径,或单个单词(包括下划线和短划线,但不是空格),我想知道如何编写一个函数来确定输入是否是单个“ “如上所述。
例如:
由于字符串方法不正常,我想知道是否可以使用正则表达式。最初我想到了这样的事情:
match = re.compile(r"[\w-]+")
word = "abdcde_-4"
if len(re.findall(match, word)) == 1:
print "Single word"
但是,它确实感觉非常难看,而且我很确定它没有抓住角落的情况。那边有(很多)更好的解决方案吗?
答案 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