J'ai un long bloc de texte qui contient un sous-texte que je souhaite supprimer en fonction d'une correspondance partielle (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"

Et je veux revenir

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

Les mots "manger" et "et" n'apparaissent pas dans la sous-chaîne, mais je veux supprimer toute la phrase "Il aime manger des pommes et des oranges". Je ne sais pas vraiment comment faire ça. Merci!

2
Rachel 14 mars 2019 à 06:49

2 réponses

Meilleure réponse

Vous pouvez utiliser difflib.SequenceMatcher :

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

Cela renvoie:

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

Démo : https://ideone.com/twDu1r

4
blhsing 14 mars 2019 à 04:00
string = string.replace(substring,'')

Cela remplacera la sous-chaîne de la chaîne par rien ("")

0
DeltaG 14 mars 2019 à 03:53