strthon中的strncmp

时间:2013-02-19 02:39:15

标签: python

我正在解析一个包含路径列表的文件。我试图查看一个路径是否在特定目录下。所以我有两个字符串S1和S2。让我们说他们是 S1 ='/ tmp /'和S2 ='/ tmp / file.txt'

如果我想检查S2是否有S1然后在C中有一些额外的字节,我会做一个strncmp的S1和S2到strlen(S1)字节。有没有办法在python中做到这一点?我是python的新手,并不知道我可用的所有模块。我可以通过迭代字符串中的字符并进行比较来实现这一点,但是想要找出是否有任何东西可以默认为我提供这种辅助函数

感谢您的帮助。

P

4 个答案:

答案 0 :(得分:12)

是。您可以执行:if a in b:这将检查a中的b是否为子字符串。

e.g。

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模块中路径名的工具。值得调查那里的内容。有一些很漂亮的功能。

答案 1 :(得分:4)

您可能正在寻找os.path.commonprefix

例如:os.path.commonprefix(['/tmp/','/tmp/file.txt'])将返回'/tmp/

因此您应该检查len(os.path.commonprefix([s1,s2])) > 0

在此处查看文档:{​​{3}}

答案 2 :(得分:1)

您可以通过

进行测试
S2[:len(S1)] == S1

甚至更简单:

S2.startswith(S1)

答案 3 :(得分:0)

您可以使用字符串的find方法

>>> s1 = "/tmp"
>>> s2 = "/tmp/file.txt"
>>> s2.find(s1)
0