#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
.