Python中的strncmp

11 投票
4 回答
64242 浏览
提问于 2025-04-17 16:19

我正在处理一个文件,里面有一系列路径。我想检查一个路径是否在特定的目录下。所以我有两个字符串:S1 = '/tmp/'S2 = '/tmp/file.txt'

如果我想检查 S2 是否包含 S1 以及一些额外的内容,在C语言中,我会用 strncmp 函数来比较 S1S2,比较的长度是 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模块里。值得去看看里面有什么,里面有一些非常不错的函数。

撰写回答