Python: перевод / замена в строке слов, которые вам не нужны - PullRequest
1 голос
/ 01 ноября 2010

По сути, у меня есть несколько фраз, и меня интересуют только те, которые содержат определенные слова.Что я хочу сделать, это 1) выяснить, есть ли это слово, и если оно есть, 2) стереть все остальные слова.Я мог бы сделать это с кучей «если» и «за», но мне было интересно, будет ли короткий / питонический подход к этому.

Ответы [ 2 ]

3 голосов
/ 01 ноября 2010

Предлагаемый алгоритм:

  • Для каждой фразы
    1. Найдите, есть ли интересное слово
    2. Если это так, удалите все остальные слова
    3. В противном случае, просто перейдите к следующей фразе

Да, для реализации этого потребуется «куча моментов и плюсов», но вы удивитесь, насколько легко и чисто такиелогика переводится на Python.

Более кратким способом достижения того же является использование понимания списков, что несколько смягчает эту логику.Учитывая, что phrases представляет собой список фраз:

phrases = [process(p) if isinteresting(p) else p for p in phrases]

Для подходящего определения функций process и isinteresting.

1 голос
/ 01 ноября 2010

Решение на основе регулярных выражений:

>>> import re
>>> phrase = "A lot of interesting and boring words"
>>> regex = re.compile(r"\b(?!(?:interesting|words)\b)\w+\W*")
>>> clean = regex.sub("", phrase)
>>> clean
'interesting words'

Регулярное выражение работает следующим образом:

\b             # start the match at a word boundary
(?!            # assert that it's not possible to match
 (?:           # one of the following:
  interesting  # "interesting"
  |            # or
  words        # "words"
 )             # add more words if desired...
 \b            # assert that there is a word boundary after our needle matches
)              # end of lookahead
\w+\W*         # match the word plus any non-word characters that follow.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...