Сделайте два символа эквивалентными в вызове Python find () - PullRequest
1 голос
/ 30 октября 2011

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

Примерно так: (я знаю, что это не работает: P)

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

Ответы [ 2 ]

4 голосов
/ 30 октября 2011
>>> 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>

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

0 голосов
/ 30 октября 2011
if (blockOfText.find('tune yards') + blockOfText.find('tune-yards'))  > -1:
    do something
...