Python中的strncmp
我正在处理一个文件,里面有一系列路径。我想检查一个路径是否在特定的目录下。所以我有两个字符串:S1 = '/tmp/' 和 S2 = '/tmp/file.txt'
如果我想检查 S2 是否包含 S1 以及一些额外的内容,在C语言中,我会用 strncmp 函数来比较 S1 和 S2,比较的长度是 strlen(S1) 字节。在Python中有没有类似的方法?我对Python还不太熟悉,也不知道有哪些模块可以用。我可以通过逐个字符地遍历字符串并进行比较来实现这个功能,但我想知道有没有什么现成的工具可以帮我完成这个任务。
相关问题:
4 个回答
1
你可以通过以下方式来测试:
S2[:len(S1)] == S1
或者更简单的方法是:
S2.startswith(S1)
5
你可能在找 os.path.commonprefix 这个功能。
举个例子:如果你用 os.path.commonprefix(['/tmp/','/tmp/file.txt']),它会返回 '/tmp/'。
所以你可以检查一下 len(os.path.commonprefix([s1,s2])) > 0 这个条件。
想了解更多,可以看看这个文档:http://docs.python.org/2/library/os.path.html
16
没错。你可以这样写:if a in b: 这会检查a是否在b的任何位置出现过。
比如:
if 'foo' in 'foobar':
print True
if 'foo' in 'barfoo':
print True
从你的帖子来看,你似乎只想检查字符串的开头。在这种情况下,你可以使用.startswith这个方法:
if 'foobar'.startswith('foo'):
print "it does!"
同样的,你也可以用endswith来做类似的事情:
if 'foobar'.endswith('bar'):
print "Yes sir :)"
最后,可能最直接的方式来实现strncmp的功能,就是用切片和==来比较:
if a[:n] == b[:n]:
print 'strncmp success!'
Python还有很多处理路径名称的工具,都是在os.path模块里。值得去看看里面有什么,里面有一些非常不错的函数。