Отладка следующей проблемы, проблемы с сообщением и ссылкой на код Я отлаживаю. Мой вопрос: я думаю, что если условие проверяется, если не нужно, и может быть безопасно удалено? Если я ошибаюсь, пожалуйста, не стесняйтесь меня исправлять. Благодарю.алгоритм строкового совпадения код для консультации
if len(first) > 1 and first[0] == '*' and len(second) == 0:
return False
Для двух строк, где первая строка может содержать символы дикой карты, а вторая строка - обычная строка. Напишите функцию, которая возвращает true, если две строки совпадают. В первой строке допускаются символы дикой карты.
* --> Matches with 0 or more instances of any character or set of characters.
? --> Matches with any one character.
Например, g*ks
матчей с geeks
матчем. И строка ge?ks*
соответствует geeksforgeeks
(примечание *
в конце первой строки). Но g*k
не соответствует gee
как символ k
нет в второй строке.
# Python program to match wild card characters
# The main function that checks if two given strings match.
# The first string may contain wildcard characters
def match(first, second):
# If we reach at the end of both strings, we are done
if len(first) == 0 and len(second) == 0:
return True
# Make sure that the characters after '*' are present
# in second string. This function assumes that the first
# string will not contain two consecutive '*'
if len(first) > 1 and first[0] == '*' and len(second) == 0:
return False
# If the first string contains '?', or current characters
# of both strings match
if (len(first) > 1 and first[0] == '?') or (len(first) != 0
and len(second) !=0 and first[0] == second[0]):
return match(first[1:],second[1:]);
# If there is *, then there are two possibilities
# a) We consider current character of second string
# b) We ignore current character of second string.
if len(first) !=0 and first[0] == '*':
return match(first[1:],second) or match(first,second[1:])
return False
спасибо заранее, Лина
BTW, я не знаю, что не так с моим форматом, я отмечаю свой код как исходный код с помощью скобок, но, похоже, 3 строки «Программа Python соответствует символам wild card» Основная функция, которая проверяет наличие двух заданных строк совпадение. Первая строка может содержать подстановочные знаки «неправильно отображаются в правильном формате. Если кто-то может помочь взглянуть, это будет здорово. Благодарю. –
FYI, похоже, вы пытаетесь выполнить рутинное манипулирование. Возможно, взгляните на модуль '' fnmatch' (сокращение от имени файла) ') (https://docs.python.org/3/library/fnmatch.html), который уже делает это? Или, если вы действительно просматриваете файловую систему, используйте модуль '' glob' (https://docs.python.org/3/library/glob.html)? – ShadowRanger
Кроме того, для отслеживания ['fnmatch' реализован в Python, никаких специальных ускорителей] (https://hg.python.org/cpython/file/3.5/Lib/fnmatch.py), поэтому вы можете просто скопировать и измените его, если вам нужно обрабатывать только '*' и '?', но не подстановочные знаки класса символов. – ShadowRanger