Удалите все слова с двумя или менее буквами из строки, кроме слова "нет" Python - PullRequest
0 голосов
/ 12 февраля 2019

Заголовок довольно понятен: на моем языке большинство букв из трех или менее букв не добавляют значения тексту, за исключением слова «нет», которое может полностью изменить значение предложения.

Я могу отбросить все слова с 3 или менее буквами, выполнив следующее:

shortword = re.compile(r'\W*\b\w{1,3}\b')
df.text=df.text.apply(lambda x: shortword.sub('', x) )

Мне просто нужно ввести условное выражение, чтобы пропустить слово "нет", но я не уверен, какпродолжить.

Есть идеи?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете использовать

r'\W*\b(?!no)\w{1,2}\b'
       ^^^^^^

Подробности

  • \W* - 0+ несловарных символов
  • \b- граница слова
  • (?!no) - непосредственно справа от текущего местоположения не может быть no последовательность символов
  • \w{1,2} - 1 или 2 символа слова (если вам нужночтобы соответствовать только букве слов, используйте [^\W\d_]{1,2} вместо)
  • \b - граница слова

Также вы можете использовать df['text'] = df['text'].str.replace(r'\W*\b(?!no)\w{1,2}\b', '') для выполненияоперация поиска и замены в одном столбце.

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