11

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

如果我想检查是否S2包含S1加上一些额外的字节,在 C 中,我会做一个strncmpofS1S2uptostrlen(S1)个字节。有没有办法在 Python 中做到这一点?我是 Python 新手,还不知道所有可用的模块。我可以通过迭代字符串中的字符并进行比较来轻松实现这一点,但想知道是否有任何东西可以默认为我提供这些帮助函数

4

4 回答 4

16

是的。你可以这样做: if a in b: 这将检查是否ab.

例如

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模块中路径名的工具。值得调查那里有什么。有一些非常简洁的功能。

于 2013-02-19T02:42:12.990 回答
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

于 2013-02-19T02:42:42.560 回答
1

您可以通过以下方式进行测试

S2[:len(S1)] == S1

甚至更简单:

S2.startswith(S1)
于 2013-02-19T02:46:38.990 回答
0

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

>>> s1 = "/tmp"
>>> s2 = "/tmp/file.txt"
>>> s2.find(s1)
0
于 2013-02-19T02:43:43.047 回答