我正在解析一个包含路径列表的文件。我试图查看一个路径是否在特定目录下。所以我有两个字符串S1和S2。让我们说他们是 S1 ='/ tmp /'和S2 ='/ tmp / file.txt'
如果我想检查S2是否有S1然后在C中有一些额外的字节,我会做一个strncmp的S1和S2到strlen(S1)字节。有没有办法在python中做到这一点?我是python的新手,并不知道我可用的所有模块。我可以通过迭代字符串中的字符并进行比较来实现这一点,但是想要找出是否有任何东西可以默认为我提供这种辅助函数
感谢您的帮助。
P
答案 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