Сделать два символа эквивалентными в вызове Python find()

#python #string #search #find #character

#python #строка #Поиск #Найти #символ

Вопрос:

Используя Python, я хочу выполнить поиск, например, 'tune yards' в блоке текста, который может указывать 'tune-yards' (с дефисом), а может указывать 'tune yards' (без). Я хочу, чтобы оба считались совпадениями. Я использую find() функцию. Есть ли хороший Pythonic способ обработки - и пробелов как одного и того же, вместо того, чтобы просто складывать elif операторы?

Что-то вроде этого: (Я знаю, что это не работает: P)

 treating '-' as ' ':
    if blockOfText.find('tune yards') > -1:
        do something
 

Комментарии:

1. Я стараюсь не replace('-', ' ') использовать блок текста только потому, что это кажется вялым

Ответ №1:

 >>> re.search('tune[ -]yards', '58 tune yards of music')
<_sre.SRE_Match object at 0x1ad68b8>
>>> re.search('tune[ -]yards', '35 tune-yards of trombone')
<_sre.SRE_Match object at 0x1ad6988>
 

И объекты сопоставления всегда имеют значение true (с другим возможным возвращаемым значением None ), поэтому результат можно проверить с помощью if .

Комментарии:

1. Я был очень впечатлен re во время изучения Python. Спасибо

Ответ №2:

 if (blockOfText.find('tune yards')   blockOfText.find('tune-yards'))  > -1:
    do something
 

Комментарии:

1. При этом не удастся найти текст в позиции 0.

2. Если местоположение совпадения не имеет значения, find() неудобен — используйте 'tune yards' in blockOfText or 'tune-yards' in blockOfText .