Question

Disons que j'ai la chaîne suivante:

"I am the most foo h4ck3r ever!!"

J'essaie d'écrire une fonction makeSpecial (foo) dans laquelle la sous-chaîne foo serait encapsulée dans un nouvel élément span, ce qui donnerait:

"I am the most <span class="special">foo></span> h4ck3r ever!!"

BeautifulSoup semblait être la voie à suivre, mais je n’ai pas réussi à le faire fonctionner.

Je pourrais aussi transmettre cela au navigateur et le faire en javascript, mais cela ne semble pas être une bonne idée.

Quelques conseils pour cela seraient vraiment utiles, en particulier en python.

Était-ce utile?

La solution

Que diriez-vous de cela:

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def makeSpecial(mystring, special_substr):
...     return mystring.replace(special_substr, '<span class="special">%s</span>
' % special_substr)
...
>>> makeSpecial("I am the most foo h4ck3r ever!!", "foo")
'I am the most <span class="special">foo</span> h4ck3r ever!!'
>>>

Autres conseils

Autant que je sache, vous remplacez une simple chaîne. Vous remplacez " foo " avec "bar foo bar". Donc, à partir de la chaîne , vous pouvez simplement utiliser

replace(old, new[, count])   

Renvoie une copie de la chaîne avec toutes les occurrences de sous-chaîne remplacées par des nouvelles. Si le nombre d'arguments facultatif est donné, seules les premières occurrences sont remplacées.

Donc pour vous, ce serait:

myStr.replace("foo", "<span>foo</span>")   

Si vous vouliez le faire avec javascript / jQuery, jetez un oeil à cette question: Surligner un mot avec jQuery

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top