Python не строгий поиск текста в строке - PullRequest
1 голос
/ 07 февраля 2012

Я пытаюсь выяснить, содержит ли строка определенный текст, и если да, что-то сделать, я использовал оператор in Python, но я понял, что он слишком строг, в основном у меня есть следующий код

Обычно этовозвратил бы True

dynamic = "v23434"
filename = "v23434.jpg"

if dynamic in filename: return True

однако, если у меня есть

dynamic = "v23434-"
filename = "v23434.jpg"

, то он возвращает False из-за дефиса в конце dynamic, поэтому мой вопрос,Есть ли способ проверить, имеет ли строка имя файла строку dynamic, но для того, чтобы она не была идеальным соответствием, достаточно нескольких символов.

EDIT

Под несколькими символами я подразумеваю подстроку, состоящую из первых 3 символов в динамике, поэтому, если у меня есть

dynamic = "v23434-"
filename = "testingv23434.jpg"

, то она должна совпадать, поскольку подстрока "v23" находится внутри filename

Ответы [ 4 ]

3 голосов
/ 07 февраля 2012

Если вы просто хотите проверить первые три символа в поисковом запросе, используйте

def test(dynamic, filename):
    return dynamic[:3] in filename
1 голос
/ 07 февраля 2012

Этот фрагмент кода поможет решить вашу проблему, если вы ищете не менее 3 последовательных символов :

>>> dynamic = "v23434-"
>>> filename = "testingv23434.jpg"
>>> any( s in filename for s in [ dynamic[i:i+3] for i in range( 0, len(dynamic)-2 ) ] )
True

>>> filename = "testingv334.jpg"
>>> any( s in filename for s in [ dynamic[i:i+3] for i in range( 0, len(dynamic)-2 ) ] )
False
1 голос
/ 07 февраля 2012

Просто отрежьте первые три символа одной строки:

if dynamic[:3] in filename
0 голосов
/ 07 февраля 2012

Вам нужно отредактировать расстояния: http://www.mindrot.org/projects/py-editdist/

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