Domanda

Dire che ho la seguente stringa:

"I am the most foo h4ck3r ever!!"

Sto cercando di scrivere una funzione makeSpecial (foo) in cui la sottostringa foo verrebbe inserita in un nuovo elemento span, risultando in:

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

BeautifulSoup sembrava la strada da percorrere, ma non sono stato in grado di farlo funzionare.

Potrei anche passare questo al browser e farlo con JavaScript, ma non sembra un'ottima idea.

Alcuni consigli per questo sarebbero davvero utili, specialmente in Python.

È stato utile?

Soluzione

Che ne dici di questo:

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!!'
>>>

Altri suggerimenti

Per quanto ne so, stai facendo una semplice sostituzione della stringa. Stai sostituendo " foo " con " bar foo bar. " Quindi da string puoi semplicemente usare

replace(old, new[, count])   

Restituisce una copia della stringa con tutte le occorrenze della sottostringa vecchie sostituite da nuove. Se viene fornito il conteggio degli argomenti facoltativo, vengono sostituite solo le occorrenze del primo conteggio.

Quindi per te sarebbe:

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

Se vuoi farlo con javascript / jQuery, dai un'occhiata a questa domanda: Evidenzia una parola con jQuery

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top