Я хотел бы знать, есть ли лучший/лучший/более быстрый способ решить следующую проблему.Как найти конкретную строку в другой строке как можно быстрее?
Верно Истина, если данная строка содержит внешний вид «abc», где abc непосредственно не предшествует периоду (.). Так что «qabc» считается, но «r.abc» не учитывается.
Мое решение было:
def abc_there(string):
tmp = 0
for i in xrange(len(string)):
if string[i:i+3] == "abc" and string[i-1] != ".":
tmp += 1
return tmp > 0
EDIT:
Просто для уточнения:
".abc" -> False
".abcabc" - -> True
только экземпляр рядом с правом периода стирается.
... Я бы серьезно подумал об использовании [regex] (https: // docs.python.org/2/library/re.html). Но более серьезно, избавиться от tmp, заменить 'tmp + = 1' на' return True' и 'return tmp> 0' с' return False'. Вам нужно только найти одно событие для возврата true. – NightShadeQueen
не обязательно, если строка является «.abcabcabc», она вернет True, так как только первый символ abc сбрасывается – Dividoo
, 'return False' будет находиться вне вашего цикла for и будет работать только в том случае, если' return True' никогда не делал. – NightShadeQueen