[英]Determine if string in input is a single word in Python
我被迫使用的大脑崩溃的第三方程序决定了如何处理路径,具体取决于所提供的输入是单个单词还是完整路径:在前一种情况下,该路径是相对于某些晦涩的根目录进行解释的。
因此,假设输入可以是完整或相对路径,也可以是单个单词(包括下划线和破折号,但不能包含空格),我想知道如何编写确定输入是否为单个“单词”的函数,如下所示:以上定义。
例如:
由于字符串方法不可行,我想知道是否可以使用正则表达式。 最初我想到了这样的事情:
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.