Как удалить подстроку из текста на основе частичного совпадения в Python? - PullRequest
2 голосов
/ 14 марта 2019

У меня есть длинный блок текста, который содержит подтекст, который я хочу удалить на основе частичного совпадения (90%).

string = "Adam is a boy who lives in Michigan.  
        He loves to eat apples and oranges. 
        He also enjoys playing with his dog and cat. 
        Adam is a happy boy."

substring = "He loves to apple oranges"

И я хочу вернуть

"Adam is a boy who lives in Michigan.  
 He also enjoys playing with his dog and cat. 
 Adam is a happy boy."

Слова "есть" и "и" не появляются в подстроке, но я хочу убрать целое предложение "Он любит есть яблоки и апельсины". Я не совсем уверен, как это сделать. Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 марта 2019

Вы можете использовать difflib.SequenceMatcher:

from difflib import SequenceMatcher
'\n'.join(s for s in string.splitlines() if SequenceMatcher(' '.__eq__, s, substring).ratio() < 0.6)

Возвращает:

Adam is a boy who lives in Michigan.
He also enjoys playing with his dog and cat.
Adam is a happy boy.

Демо: https://ideone.com/twDu1r

0 голосов
/ 14 марта 2019
string = string.replace(substring,'')

Это заменит подстроку в строке ничем ("")

...