11

パスのリストを含むファイルを解析しています。1 つのパスが特定のディレクトリの下にあるかどうかを確認しようとしています。したがって、次の 2 つの文字列がS1 = '/tmp/'あります。S2 = '/tmp/file.txt'

S2含まれているかどうかを確認したい場合はS1、C でstrncmpバイト数S1S2最大数を実行しstrlen(S1)ます。Pythonでそれを行う方法はありますか? 私は Python を初めて使用し、利用可能なすべてのモジュールをまだ知りません。文字列内の文字を反復して比較するだけでこれを簡単に実装できますが、デフォルトでこれらの種類のヘルパー関数を提供するものがあるかどうかを調べたい

4

4 に答える 4

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 :)"

最後に、おそらく最も文字通りの翻訳は、strncmpslicing and を使用すること==です:

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 に答える