我被迫使用的脑死亡第三方程序决定了如何处理路径,具体取决于提供的输入是单个单词还是完整路径:在前一种情况下,路径是相对于一些晦涩的根目录进行解释的.
因此,鉴于输入可以是完整路径或相对路径,或单个单词(包括下划线和破折号,但不包括空格),我想知道如何编写一个函数来确定输入是否为单个 "词”定义如上。
例如:
- “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 中除了路径之外还包含其他数据,那么上述方法将不起作用。
