Python - recherche de texte à l'aide de beautifulSoup puis remplacer à l'origine de la soupe variable
commentary = soup.find('div', {'id' : 'live-text-commentary-wrapper'})
findtoure = commentary.find(text = re.compile('Gnegneri Toure Yaya')).replace('Gnegneri Toure Yaya', 'Yaya Toure')
Commentaire contient diverses instances de Gnegneri Touré Yaya qui a besoin de changer de Yaya Touré.
findAll()
ne fonctionne pas comme findtoure est une liste de.
L'autre problème que j'ai est ce code trouve tout simplement et les remplace dans une nouvelle variable appelée findtoure, j'ai besoin de les remplacer dans l'original de la soupe.
Je pense que je suis juste à la recherche à ce à partir d'un mauvais point de vue.
J'espère que vous avez eu une Belle Soupe pour le dîner ;), mais je ne peux pas vous blâmer si vous ne vous souvenez pas.
OriginalL'auteur user2073606 | 2013-02-24
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire ce que vous voulez avec juste
.replace()
. À partir de la BeautifulSoup documentation surNavigableString
:C'est exactement ce que vous devez faire; prendre chaque match, puis d'appeler
.replace()
sur les contenus texte et de remplacer l'original avec:Si vous souhaitez utiliser ces commentaires en outre, vous aurez besoin de faire une nouvelle découverte:
ou, si vous tous vous avez besoin est la résultante texte unicode (donc pas connecté
NavigableString
objets), il suffit de recueillir lesfixed_text
objets:Salut, Martjin, j'ai utilisé votre méthode pour traiter avec un code HTML, le .remplacez et tour dans la chaîne de caractères les étapes a travaillé comme un charme, mais quand j'ai utilisé .replace_with est donné le résultat à l'arrière, tous les forte entre parenthèses est devenu b><i>. Que dois-je faire pour résoudre ce problème?
ne pas confondre texte balises. Texte être échappé. Utiliser les
soup.new_tag()
pour créer de nouvelles balises.voir à l'Aide de python/BeautifulSoup pour remplacer le HTML de la balise de paire avec un autre pour un exemple qui combine
new_tag()
avecreplace_with()
. Ou voir Comment remplacer des caractères dans beautifulSoup? pour un exemple qui permet d'insérer un nouveau tag dans une section de texte.Merci pour votre réponse. Ma situation est un peu complexe, j'ai créé un nouveau sujet ici pour expliquer le détail à ce sujet.
OriginalL'auteur Martijn Pieters