Удаление слова, но не подслово из предложения в Python - PullRequest
1 голос
/ 24 июня 2019

Мне нужно удалить заданный вектор слов из предложения (заданной строки) в Python.

Проблема в том, что я хочу удалить только слова, но не подстроки или подслова.

примечание: я не могу предположить, что до или после слова есть пробел

Я пробовал функцию .replace(word,""), но не работает

пример: s = "I'am at home and i will work by webcam call"

, когдая делаю s.replace("am","")

вывод: i' at home and i will work by webc call

может быть, может помочь токенизация?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Вы можете использовать регулярное выражение для re.sub с границей слова \b символ:

>>> import re
>>> s = "I'am at home and i will work by webcam call"
>>> re.sub(r"\bam\b", "", s)
"I' at home and i will work by webcam call"

Со списком слов вы можете использовать цикл илипостроить дизъюнкцию из нескольких слов, используя |, например, "am|and|i".При желании используйте флаг re.I, чтобы игнорировать верхний / нижний регистр:

>>> words = ["am", "and", "i"]
>>> re.sub(r"\b(%s)\b" % "|".join(words), "", s, flags=re.I)
"' at home   will work by webcam call"
0 голосов
/ 24 июня 2019

Вы можете использовать понимание списка следующим образом:

sentence_filtered = " ".join([word for word in sentence.split() if word.lower() not in vector_of_words])
...