Строка поиска в условии if соответствует только некоторым элементам - PullRequest
0 голосов
/ 13 июня 2018

Это приводит только к небольшому списку возвращенных предметов, которые ему соответствуют, когда есть еще много, которые соответствуют.findit содержит строку поиска, которая преобразуется в нижний регистр.Список файлов также преобразуется в нижний регистр.

home_dir_path = "/home/share/DUMMY_DATA"    # Development data
full_path_original = ""
regex_string = "^" + home_dir_path + "/"

# Enter all or part of the file name to search:             
if submit_search is not None:
    print "<h1>Searching for: " + findit + "</h1>"  
    # Convert search_string to lower case for compare.
    search_string = findit.lower()          
    for path, directories, files in os.walk(home_dir_path):
        for file in files:
            full_path_original = os.path.join(path, file)
            full_path_display = re.sub(regex_string, "", full_path_original)
            full_path = full_path_display.lower()
            if search_string in full_path:
                print full_path_display + "<br>"

Если я выполняю печать full_path перед последним оператором if, в нем перечислены все файлы, поэтому кажется, что search_string не работает.Но это соответствует паре десятков из них, где есть пара сотен, которые должны отображаться.

Есть ли другой подход, который я должен использовать, чем 'if search_string in full_path:'?

Вот некоторые примеры данных, которые я собрал, чтобы воспроизвести проблему.

find . | grep -i alpha
./alpha
./alpha/resume
./alpha/a
./alpha/b
./alpha/c
./alpha/d
./alpha/e
./alpha/f
./alpha/.hidden_file_test
./Alpha
./alphA
./alphA/stuff
./AlPha
./AlPha/.hidden_nothing

Приведенный выше код, используемый для поиска «alpha» в том же каталоге, что и выше, возвращает это:

Searching for: alpha
alpha/f
alpha/f
alphA/stuff
AlPha/.hidden_nothing
AlPha/.hidden_nothing
AlPha/.hidden_nothing

Это подмножество того, что там есть, и оно содержит дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...