1

次のコードがあります。

import os
from os.path import join, getsize

def main():
    directory = "\Surveys_I"
    for root, dirs, files in os.walk(directory):
       for i in dirs:
            if not i.find("Hey"):
                 print i

上記のコードを使用すると、(直観に反して) Hey という単語を含むすべてのファイルのリストが表示されます。私が行った場合

if i.find("Hey") == -1hey を含まないファイルのみを取得します。

私が行った場合:

if i.find("Hey") == 1、単一のファイルを取得しません。

どうしたの?

4

3 に答える 3

3

str.find部分文字列が見つからない場合は -1 を返し、それ以外の場合はインデックスを返します。

>>> 'abcd'.find('c')
2
>>> 'abcd'.find('e')
-1
 # returns 1 because the first matching sub-string starts at the index 1
>>> "aheyqwert".find('hey')
1

ヘルプstr.find:

>>> help(str.find)
Help on method_descriptor:

find(...)
    S.find(sub [,start [,end]]) -> int

    Return the lowest index in S where substring sub is found,
    such that sub is contained within S[start:end].  Optional
    arguments start and end are interpreted as in slice notation.

    Return -1 on failure.
于 2013-11-07T10:11:26.593 に答える